简介
BM25 检索增强生成(BM25 RAG)是一种高级技术,将用于信息检索的 BM25(Best Matching 25)算法与大语言模型结合,用于文本生成。通过使用经过验证的概率检索模型,此方法可提高生成响应的准确性和相关性。
BM25 RAG 工作流
快速开始
Notebook
您可以运行此代码库中提供的 Jupyter notebook,详细探索 BM25 RAG。https://github.com/adithya-s-k/AI-Engineering.academy/tree/main/RAG/01_BM25_RAG
聊天应用程序
- 安装依赖项:
pip install -r requirements.txt
- 运行应用程序:
python app.py
- 动态摄取数据:
python app.py --ingest --data_dir /path/to/documents
服务器
运行服务器:
python server.py
服务器包含两个端点:
/api/ingest
:用于摄取新文档/api/query
:用于查询 BM25 RAG 系统
BM25 RAG 的关键特性
- 概率检索:BM25 使用概率模型对文档进行排序,为检索提供了理论上的可靠基础。
- 词频饱和:BM25 考虑了重复词的边际收益递减,提高了检索质量。
- 文档长度归一化:算法考虑文档长度,减少对较长文档的偏向。
- 上下文相关性:通过基于检索信息生成响应,BM25 RAG 提供更准确和相关的回答。
- 可扩展性:BM25 检索步骤可高效处理大型文档集。
BM25 RAG 的优势
- 提高准确性:结合概率检索与神经文本生成的优点。
- 可解释性:BM25 的评分机制相比密集向量检索方法更具可解释性。
- 处理长尾查询:在需要特定或稀有信息的查询中表现优异。
- 无需嵌入:与基于向量的 RAG 不同,BM25 不需要文档嵌入,降低了计算开销。
前置条件
- Python 3.7+
- Jupyter Notebook 或 JupyterLab(用于运行 notebook)
- 所需 Python 包(见
requirements.txt
) - 所选语言模型的 API 密钥(如 OpenAI API 密钥)