https://github.com/cuc-zihang-liu/text-based-rag-framework

基于文本的RAG框架(多种编码器组合)

https://github.com/cuc-zihang-liu/text-based-rag-framework

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (6.1%) to scientific vocabulary

Keywords

chatglm embeddings rag text-to-speech
Last synced: 5 months ago · JSON representation

Repository

基于文本的RAG框架(多种编码器组合)

Basic Info
  • Host: GitHub
  • Owner: CUC-ZIHANG-LIU
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 15 MB
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Topics
chatglm embeddings rag text-to-speech
Created 10 months ago · Last pushed 9 months ago
Metadata Files
Readme

README.md

多策略RAG问答系统框架

一个基于多路召回(BM25, TF-IDF, BGE向量)与重排序模型的检索增强生成(RAG)问答系统实验框架。

Python 3.x RAG Framework Recall Methods Reranker License: MIT

目录

关于项目

本项目是一个为解决特定问答任务(基于初赛训练数据集.pdf)而搭建的RAG实验平台。它旨在通过模块化的方式,系统性地测试和评估不同信息检索(IR)和自然语言处理(NLP)技术组合在问答场景下的表现。

框架核心在于探索 "召回 -> 重排序 -> 生成" 的范式,通过结合传统的关键词匹配算法(BM25, TF-IDF)和现代的密集向量检索(BGE, M3E),实现了一个强大的多路召回系统,并利用重排序模型进一步优化送入大语言模型(LLM)的上下文质量。

功能特性

  • 多种召回策略: 支持并实现了三种主流的召回方法:
    • TF-IDF: 经典的词频-逆文档频率算法。
    • BM25: 业界领先的概率相关性排序算法。
    • 向量检索: 使用BGE和M3E等前沿模型将文本编码为向量进行语义相似度搜索。
  • 多路召回与融合: 能够将来自不同召回策略的结果进行合并,取长补短,提高召回的全面性。
  • 重排序精选: 集成了BGE-Reranker模型,对召回的文档进行二次排序,筛选出与问题最相关的上下文。
  • 模块化实验脚本: 项目中的test系列脚本,每个都代表一个完整的、可独立运行的RAG流程,方便进行对比实验和消融研究。
  • Prompt优化集成: 在最终生成答案的环节,脚本中包含了对Prompt的优化逻辑,以提升大语言模型(LLM)回答的准确性。

实现技术

  • 核心语言: Python
  • 数据处理: pandas, numpy
  • 文本检索: scikit-learn (TF-IDF), rank-bm25 (BM25)
  • 向量与模型: sentence-transformers, FlagEmbedding, transformers, torch
  • 进度显示: tqdm
  • PDF读取: PyPDF2 (或类似库)

项目架构

本项目遵循一个经典且高效的RAG流程,具体步骤如下:

  1. 数据加载与预处理: 从 questions.json初赛训练数据集.pdf 中加载问答对和知识库。
  2. 索引构建: 针对知识库,分别构建 TF-IDF、BM25 和 BGE 向量索引。
  3. 多路召回 (Recall):
    • 对于每个问题,同时使用 TF-IDF、BM25 和 BGE 向量索引进行检索,获取候选文档列表。
    • 对各路召回的结果进行合并去重。
  4. 重排序 (Rerank):
    • 使用 BGE-Reranker 模型对合并后的候选文档列表进行打分和重新排序。
    • 选取得分最高的 Top-K 个文档作为最终的上下文(Context)。
  5. 答案生成 (Generate):
    • 构建优化的 Prompt,将原始问题和经过重排序的上下文结合起来。
    • 调用外部大语言模型(LLM)API,生成最终答案。
  6. 结果保存: 将生成的答案保存为 submit-*.json 格式的文件。

mermaid graph TD; A[用户问题] --> B{多路召回}; B --> C[BM25]; B --> D[TF-IDF]; B --> E[BGE 向量检索]; C --> F[结果融合]; D --> F; E --> F; F --> G[BGE 重排序]; G --> H{构建Prompt}; A --> H; H --> I[大语言模型 LLM]; I --> J[生成最终答案];

上手指南

请按照以下说明在本地设置并运行该项目。

开发前的配置要求

  • Python 3.8+
  • pip (Python包管理工具)
  • 建议使用虚拟环境 (如 venvconda)

安装与运行

  1. 克隆仓库到本地 sh git clone https://github.com/your_github_name/your_repository.git cd your_repository
  2. (建议) 创建 requirements.txt 文件,并写入以下依赖: txt pandas numpy scikit-learn rank_bm25 sentence-transformers FlagEmbedding transformers torch torchaudio torchvision tqdm PyPDF2
  3. 通过 pip 安装依赖 sh pip install -r requirements.txt
  4. 运行实验脚本 选择一个 test5-*.py 脚本来运行一个完整的RAG流程。例如,要运行包含BM25和BGE双路召回及重排序的流程: sh python "test5-多路召回重排序模型-BM25-BGE-Reranker-文本问答Promopt优化.py" 程序运行后会进行计算,并将最终结果输出到对应的 submit-*.json 文件中。

文件目录说明

项目主要由一系列Python脚本构成,每个脚本都有明确的功能定位: . ├── test1-API调用.py # 基础功能测试:调用大语言模型API ├── test2-BM25-读取问答数据集.py # 模块测试:实现BM25召回 ├── test2-TFIDF-读取问答数据集.py # 模块测试:实现TF-IDF召回 ├── test3-BGE-文本编码模型.py # 模块测试:使用BGE模型进行文本向量化 ├── test3-M3E-文本编码模型.py # 模块测试:使用M3E模型进行文本向量化 ├── test4-重排序逻辑模型.py # 模块测试:实现BGE-Reranker重排序逻辑 ├── test5-*.py # 端到端流程:组合不同模块进行完整的问答实验 │ ├── questions.json # 问答数据集 ├── 初赛训练数据集.pdf # 用于构建知识库的原始PDF文件 ├── submit-*.json # 各个实验流程生成的最终答案文件 └── README.md # 本文件

版本控制

该项目使用Git进行版本管理。您可以在repository参看当前可用版本。

版权说明

该项目签署了MIT 授权许可,详情请参阅 LICENSE.txt

Owner

  • Name: 刘子航
  • Login: CUC-ZIHANG-LIU
  • Kind: user
  • Company: 中国传媒大学

GitHub Events

Total
  • Watch event: 1
  • Push event: 1
Last Year
  • Watch event: 1
  • Push event: 1

Dependencies

.github/workflows/python-app.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v3 composite