探索OpenAI Metadata Tagger:自动化文档标签的利器

引言

在处理大量文档时,为每个文档添加结构化的元数据(如标题、语气或长度)可以帮助实现更精确的相似性搜索。然而,手动标记这些文档既费时又乏味。本文将介绍一种自动化的解决方案:OpenAI Metadata Tagger,它能够根据提供的模式自动提取文档的元数据。

主要内容

OpenAI Metadata Tagger的工作原理

OpenAI Metadata Tagger使用可配置的OpenAI Functions链,将文档内容与提供的模式相匹配,自动提取所需的元数据。其运行效果最佳的情况下,是在处理完整文档时。

初始化Metadata Tagger

要使用OpenAI Metadata Tagger,你需要定义一个有效的JSON Schema或Pydantic Schema来指定要提取的元数据字段。

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)

使用Pydantic Schema

from typing import Literal
from pydantic import BaseModel, Field

class Properties(BaseModel):
    movie_title: str
    critic: str
    tone: Literal["positive", "negative"]
    rating: int = Field(description="Rating out of 5 stars")

document_transformer = create_metadata_tagger(Properties, 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",
)

常见问题和解决方案

网络限制

由于网络限制,API可能无法正常访问,因此建议使用API代理服务来提高访问的稳定性。

匿名批评家的处理

如果需要特定处理匿名批评家,可以通过自定义提示增强文档处理:

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)

总结和进一步学习资源

OpenAI Metadata Tagger是自动化文档标记的强大工具,大大简化了文档管理的工作流程。了解更多关于Langchain与OpenAI的结合使用,可以参考以下资源。

参考资料

  1. Langchain Documentation
  2. OpenAI API Documentation

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

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值