引言
ManticoreSearch是一款开源搜索引擎,以其快速、可扩展和用户友好的特性而广受欢迎。最近,ManticoreSearch引入了向量搜索功能,这为基于向量相似度的搜索执行提供了可能性。本文旨在介绍如何在ManticoreSearch中设置和使用向量搜索功能。
主要内容
1. 环境设置
向量搜索功能在ManticoreSearch的开发版本中提供,因此需要使用developmental manticoresearch-dev Python客户端。以下是设置ManticoreSearch和安装必要包的步骤:
import time
# 启动Docker容器
containers = !docker ps --filter "name=langchain-manticoresearch-server" -q
if len(containers) == 0:
!docker run -d -p 9308:9308 --name langchain-manticoresearch-server manticoresearch/manticore:dev
time.sleep(20) # 等待容器启动
# 获取容器ID
container_id = containers[0]
# 作为root用户安装manticore-columnar-lib包
!docker exec -it --user 0 {container_id} apt-get update
!docker exec -it --user 0 {container_id} apt-get install -y manticore-columnar-lib
# 重启容器
!docker restart {container_id}
2. 安装ManticoreSearch Python客户端
确保安装了开发版的Python客户端:
%pip install --upgrade --quiet manticoresearch-dev
代码示例
以下代码示例展示了如何使用OpenAIEmbeddings集成并执行向量搜索:
from langchain.text_splitter import CharacterTextSplitter
from langchain_community.embeddings import GPT4AllEmbeddings
from langchain_community.vectorstores import ManticoreSearch, ManticoreSearchSettings
from langchain_community.document_loaders import TextLoader
# 加载文档
loader = TextLoader("../../modules/paul_graham_essay.txt")
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=100, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
# 生成向量嵌入
embeddings = GPT4AllEmbeddings()
# 向量搜索设置
for d in docs:
d.metadata = {"some": "metadata"}
settings = ManticoreSearchSettings(table="manticoresearch_vector_search_example")
# 创建向量搜索
docsearch = ManticoreSearch.from_documents(docs, embeddings, config=settings)
# 执行相似度搜索
query = "Robert Morris is"
docs = docsearch.similarity_search(query)
print(docs)
常见问题和解决方案
- 容器启动失败:确保Docker已正确安装并运行。
- 向量生成错误:检查OpenAI API密钥是否有效,确保外部API的访问稳定性,必要时使用API代理服务。
总结和进一步学习资源
ManticoreSearch的向量搜索功能为开发者提供了强大的搜索能力,适用于各种应用场景。通过正确设置环境并使用开发版客户端,您可以在自己的项目中实现这一功能。
进一步学习资源
参考资料
- ManticoreSearch GitHub 仓库
- Docker 文档
- Langchain 文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---