引言
在处理大量文档时,能够自动化地为文档添加结构化元数据(例如标题、语调、长度等),对于提高文档检索和相似性搜索的精准度至关重要。手动完成这些标签的添加过程往往繁琐而耗时。然而,OpenAI Metadata Tagger为我们提供了一种高效的自动化解决方案。本文将深入探讨如何使用OpenAI Metadata Tagger从文档中提取元数据,并提供详细的代码示例。
主要内容
什么是OpenAI Metadata Tagger?
OpenAI Metadata Tagger是一种文档转换工具,可以依据预定义的模式从文档中自动提取元数据。它基于OpenAI的功能链(Functions)进行配置,因此在使用自定义大语言模型实例时,必须选择支持功能的OpenAI模型。
使用前的准备
在开始使用OpenAI Metadata Tagger之前,需要确保文档是完整的,因为该工具在处理完整文档时效果最佳。在进行任何拆分或其他处理之前,建议首先使用该工具提取元数据。
定义元数据模式
定义用于提取元数据的JSON 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 Metadata Tagger提取文档元数据。
from langchain_community.document_transformers.openai_functions import (
create_metadata_tagger,
)
from langchain_core.documents import Document
from langchain_openai import ChatOpenAI
import json
# 使用API代理服务提高访问稳定性
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)
print(
*[d.page_content + "\n\n" + json.dumps(d.metadata) for d in enhanced_documents],
sep="\n\n---------------\n\n",
)
常见问题和解决方案
1. 如何处理匿名评论者的元数据?
通过自定义提示模板,可以处理特定需求,例如将匿名评论者识别为某一知名评论者。
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)
2. 无法访问API?
由于网络限制,开发者可能需要使用API代理服务来提高访问的稳定性。请在API请求中引入代理。
总结和进一步学习资源
OpenAI Metadata Tagger通过自动化提取元数据,不仅节省了大量的时间和精力,还提高了文档管理的智能化水平。想要深入了解更多细节,请参考以下资源。
参考资料
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---