老铁们,今天我们来聊聊 Weaviate 中的混合搜索功能。这个技术点其实不难,但是能给我们的搜索结果提升相当大的准确性和相关性。说白了就是通过结合多个搜索算法来优化结果。
技术背景介绍
Weaviate 是一个基于向量的搜索引擎,它利用稀疏和密集向量来表现搜索查询和文档的意义和上下文。混合搜索则结合了 BM25
和向量搜索的排名机制,旨在返回最优的搜索结果。
原理深度解析
在混合搜索中,我们利用密集向量来抓取文档的深层语义,同时通过稀疏向量捕获关键词的精细程度。简单来说,稀疏向量(如 BM25
)有助于处理关键词匹配,而密集向量则帮助理解查询的概念。
配置
首先,连接到你托管的 Weaviate 向量存储需要在 chain.py
中设置几个环境变量:
WEAVIATE_ENVIRONMENT
WEAVIATE_API_KEY
此外,还需要设置 OPENAI_API_KEY
以使用 OpenAI 模型。
实战代码演示
要使用此包,你需要首先安装 LangChain CLI:
pip install -U langchain-cli
然后,你可以通过以下命令创建一个新的 LangChain 项目并安装混合搜索包:
langchain app new my-app --package hybrid-search-weaviate
如果想将其添加到现有项目中,只需运行:
langchain app add hybrid-search-weaviate
在你的 server.py
文件中添加以下代码:
from hybrid_search_weaviate import chain as hybrid_search_weaviate_chain
add_routes(app, hybrid_search_weaviate_chain, path="/hybrid-search-weaviate")
优化建议分享
(Optional) 可以配置 LangSmith 来追踪、监控和调试 LangChain 应用程序。LangSmith提供了一种更加直观的方式来分析开发过程中的问题,很适合在开发中使用老铁们,可以试试看:
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>
在项目目录下,通过以下命令启动 LangServe 实例:
langchain serve
这样FastAPI应用就会在本地启动,你可以在 http://localhost:8000
访问,查看所有模板在 http://127.0.0.1:8000/docs
,并通过 http://127.0.0.1:8000/hybrid-search-weaviate/playground
进入 playground。
补充说明和总结
你可以通过以下代码从远程访问模板:
from langserve.client import RemoteRunnable
runnable = RemoteRunnable("http://localhost:8000/hybrid-search-weaviate")
今天的技术分享就到这里,希望这个混合搜索的实现能对大家的项目有帮助。在开发过程中遇到问题也可以在评论区交流~