Tigris
Tigris 是一個開源的 Serverless NoSQL 資料庫和搜尋平台,旨在簡化建構高效能向量搜尋應用程式的過程。
Tigris
消除了管理、操作和同步多種工具的基礎架構複雜性,讓您可以專注於建構出色的應用程式。
本筆記本將引導您如何使用 Tigris 作為您的 VectorStore。
先決條件
- 一個 OpenAI 帳戶。 您可以在此處註冊帳戶。
- 註冊一個免費的 Tigris 帳戶。 註冊 Tigris 帳戶後,建立一個名為
vectordemo
的新專案。 接下來,記下您在其中建立專案的區域的Uri、clientId 和 clientSecret。 您可以從專案的應用程式金鑰部分取得所有這些資訊。
讓我們首先安裝我們的依賴項
%pip install --upgrade --quiet tigrisdb openapi-schema-pydantic langchain-openai langchain-community tiktoken
我們將在我們的環境中載入 OpenAI
api 金鑰和 Tigris
憑證
import getpass
import os
if "OPENAI_API_KEY" not in os.environ:
os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")
if "TIGRIS_PROJECT" not in os.environ:
os.environ["TIGRIS_PROJECT"] = getpass.getpass("Tigris Project Name:")
if "TIGRIS_CLIENT_ID" not in os.environ:
os.environ["TIGRIS_CLIENT_ID"] = getpass.getpass("Tigris Client Id:")
if "TIGRIS_CLIENT_SECRET" not in os.environ:
os.environ["TIGRIS_CLIENT_SECRET"] = getpass.getpass("Tigris Client Secret:")
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import Tigris
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import CharacterTextSplitter
初始化 Tigris 向量儲存
讓我們匯入我們的測試資料集
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")
相似性搜尋
query = "What did the president say about Ketanji Brown Jackson"
found_docs = vector_store.similarity_search(query)
print(found_docs)
帶有分數(向量距離)的相似性搜尋
query = "What did the president say about Ketanji Brown Jackson"
result = vector_store.similarity_search_with_score(query)
for doc, score in result:
print(f"document={doc}, score={score}")