使用Vectara进行自查询:创建智能生成式AI平台

44 阅读2分钟

引言

在当今快速发展的AI领域,Vectara提供了一种值得信赖的生成式AI平台,帮助组织迅速创建类似ChatGPT的体验。本文将深入探讨如何利用Vectara的自查询功能,通过向量数据库和检索增强生成技术,构建智能AI助手。

主要内容

Vectara概述

Vectara提供无服务器的RAG即服务(Retrieval-Augmented-Generation),包括:

  • 文本提取工具:支持PDF、PPT、DOCX等文件格式。
  • 基于机器学习的分块技术:提供先进的性能。
  • Boomerang嵌入模型。
  • 内部向量数据库:存储文本块和嵌入向量。
  • 查询服务:自动将查询编码为嵌入,并检索最相关的文本段落。

获取开始

  1. 注册Vectara账户:获取客户ID。
  2. 创建语料库:存储文本数据。
  3. 生成API密钥:用于访问语料库,需保密。

环境配置

使用以下代码将客户ID、语料库ID和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:")

连接到Vectara

以下代码演示如何从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代理服务提高访问稳定性
vectara = Vectara()

# 上传文档
docs = [
    Document(page_content="A bunch of scientists bring back dinosaurs and mayhem breaks loose", metadata={"year": 1993, "rating": 7.7, "genre": "science fiction"}),
    # 其他文档...
]

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"),
    AttributeInfo(name="director", description="The name of the movie director", type="string"),
    AttributeInfo(name="rating", description="A 1-10 rating for the movie", type="float"),
]

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

常见问题和解决方案

网络限制

由于某些地区的网络限制,开发者可能需要考虑使用API代理服务以提高访问稳定性。

数据安全性

确保API密钥的安全性,不要将其公开发布或分享。

总结和进一步学习资源

Vectara提供了强大的工具来支持生成式AI应用。通过本文,您可以初步了解如何使用其API进行高级查询和数据检索。欲了解更多信息,请访问Vectara API文档

参考资料

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

---END---