引言
在处理大规模文档时,自动标注文档的元数据(如标题、语调、长度等)显得尤为重要。拥有这些结构化的元数据,可以在后续的相似性查询中提供更精准的结果。然而,手动标注大量文档的元数据是十分繁琐的。本文将介绍如何使用OpenAI Metadata Tagger自动化地为文档提取和标注元数据,从而大大提高你的工作效率。
主要内容
Metadata Tagger 简介
OpenAI Metadata Tagger 是一个用于自动提取文档元数据的文档转换器。它通过一个可配置的OpenAI Functions驱动链工作,因此如果你打算自定义LLM实例,它必须是支持函数的OpenAI模型。这种方法特别适合完整的文档,因此建议在其他拆分或处理前首先使用它。
设置和使用
你可以通过初始化一个有效的JSON 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") # 使用API代理服务提高访问稳定性
document_transformer = create_metadata_tagger(metadata_schema=schema, llm=llm)
然后,只需将文档列表传递给文档转换器,它将从内容中提取元数据。
元数据提取示例
以下是一个简单的示例代码展示如何提取电影评论的元数据:
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",
)
自定义和扩展
你还可以使用Pydantic来初始化文档转换器,并通过自定义提示来调整标签链。例如,如果你想让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)
常见问题和解决方案
- 文档不完整导致的元数据提取错误:确保文档在处理前是完整的。
- 自定义模型提示无效:确保提示文本中包含了恰当的上下文和指导。
- 访问API不稳定:考虑在某些地区使用API代理服务来提高访问的稳定性。
总结与进一步学习资源
OpenAI Metadata Tagger为处理大量文档提供了一种高效的自动化解决方案。通过自定义元数据模式和提示文本,你可以根据特定需求对文档进行标注,从而为后续的分析或搜索提供支持。
进一步学习资源
参考资料
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—