Skip to main content

Typesense(类型感知)

Typesense 是一个开源的内存搜索引擎,您可以选择自行托管或在Typesense云上运行。

Typesense专注于性能,通过将整个索引存储在RAM中(同时备份到磁盘),并通过简化可用选项和设置良好的默认值来提供开箱即用的开发者体验。

它还允许您将基于属性的过滤与向量查询结合使用,以获取最相关的文档。

本笔记本向您展示如何将Typesense用作您的VectorStore。

首先,让我们安装我们的依赖项:

pip install typesense openapi-schema-pydantic openai tiktoken

我们想要使用OpenAIEmbeddings,所以我们需要获取OpenAI API密钥。

import os
import getpass

os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Typesense
from langchain.document_loaders import TextLoader

让我们导入我们的测试数据集:

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()
docsearch = Typesense.from_documents(
docs,
embeddings,
typesense_client_params={
"host": "localhost", # 在Typesense云中使用xxx.a1.typesense.net
"port": "8108", # 在Typesense云中使用443
"protocol": "http", # 在Typesense云中使用https
"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作为检索器

Typesense,像其他向量存储一样,是LangChain的检索器,使用余弦相似度。

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