跳至主要內容

Typesense

Typesense 是一個開源、記憶體內的搜尋引擎,您可以自行託管 (self-host),或者在 Typesense Cloud 上執行。

Typesense 專注於效能,將整個索引儲存在 RAM 中(並在磁碟上備份),並且還專注於提供開箱即用的開發者體驗,簡化可用選項並設定良好的預設值。

它還允許您將基於屬性的篩選與向量查詢結合使用,以提取最相關的文件。

這個筆記本展示了如何將 Typesense 用作您的向量儲存 (VectorStore)。

讓我們先安裝我們的依賴項

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

我們要使用 OpenAIEmbeddings,因此我們必須取得 OpenAI API 金鑰。

import getpass
import os

if "OPENAI_API_KEY" not in os.environ:
os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")
from langchain_community.document_loaders import TextLoader
from langchain_community.vectorstores import Typesense
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import CharacterTextSplitter

讓我們導入我們的測試數據集

loader = TextLoader("../../how_to/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()
docsearch = Typesense.from_documents(
docs,
embeddings,
typesense_client_params={
"host": "localhost", # Use xxx.a1.typesense.net for Typesense Cloud
"port": "8108", # Use 443 for Typesense Cloud
"protocol": "http", # Use https for Typesense Cloud
"typesense_api_key": "xyz",
"typesense_collection_name": "lang-chain",
},
)
query = "What did the president say about Ketanji Brown Jackson"
found_docs = docsearch.similarity_search(query)
print(found_docs[0].page_content)

Typesense 作為一個檢索器 (Retriever)

Typesense,就像所有其他向量儲存一樣,是一個 LangChain 檢索器 (Retriever),通過使用餘弦相似度。

retriever = docsearch.as_retriever()
retriever
query = "What did the president say about Ketanji Brown Jackson"
retriever.invoke(query)[0]

此頁面是否有幫助?