Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

知识向量库 LLM 问答助手

基于 FAISS 向量库和 GLM-4.5-air 的科研论文问答系统,支持混合检索(BM25 + 向量)和通用问答。

环境依赖

必需环境

  • Python 3.10+
  • Java 11+ (必须配置在系统 PATH 中,OpenDataLoader 核心依赖)

安装 Java

# Ubuntu/Debian
sudo apt install openjdk-11-jdk

# CentOS/RHEL
sudo yum install java-11-openjdk

# macOS
brew install openjdk@11

# 验证安装
java -version

快速开始

1. 创建虚拟环境

python3.12 -m venv .venv
source .venv/bin/activate  # Linux/macOS
#
.venv\Scripts\activate  # Windows

2. 安装依赖

pip install -r requirements.txt

3. 配置环境变量

# 复制环境变量模板
cp .env.example .env

# 编辑 .env 文件,填入配置信息

配置示例:

# Embedding 配置
EMBEDDING_MODEL=embedding-3
EMBEDDING_DIM=1024
EMBEDDING_API_KEY=your_embedding_api_key_here
EMBEDDING_BASE_URL=https://open.bigmodel.cn/api/paas/v4/

# LLM 配置
LLM_MODEL=glm-4.5-air
LLM_TEMPERATURE=0.3
LLM_MAX_TOKENS=2000
LLM_API_KEY=your_llm_api_key_here
LLM_BASE_URL=https://open.bigmodel.cn/api/paas/v4/

# 检索配置
RETRIEVAL_BM25_K=10
RETRIEVAL_VECTOR_K=10
RETRIEVAL_RRF_K=60

# 分块配置
CHUNKING_MIN_SIZE=500
CHUNKING_MAX_SIZE=1000
CHUNKING_OVERLAP=100
CHUNKING_SKIP_FORMULAS=true

4. 准备科研词典(可选)

mkdir -p data/dict
echo -e "深度学习\n神经网络\n注意力机制\nTransformer" > data/dict/science_dict.txt

5. 构建向量库

# 将 PDF 论文放入 data/papers/ 目录
python src/cli.py build --paper data/papers/your_paper.pdf

6. 启动问答

python src/qa_system.py

命令行工具

构建向量库

# 从 PDF 构建(单个文件)
python src/cli.py build --paper <pdf_path>

# 从 PDF 构建(批量处理整个目录)
python src/cli.py build --paper-dir <pdf_directory>

# 从 JSON 构建(单个文件)
python src/cli.py build-from-json --json-path <json_path>

# 从 JSON 构建(批量处理整个目录)
python src/cli.py build-from-json --json-dir <json_directory>

# 追加到现有向量库(而非覆盖)
python src/cli.py build --paper <pdf_path> --append
python src/cli.py build-from-json --json-path <json_path> --append

文件管理

# 列出目录中的 PDF 文件
python src/cli.py list-files --dir data/papers --extension pdf

# 列出目录中的 JSON 文件
python src/cli.py list-files --dir data/json_output --extension json

# 查看向量库信息
python src/cli.py info

# 清空向量库
python src/cli.py clear

使用示例

# 1. 查看 data/papers 目录中的 PDF 文件
python src/cli.py list-files --dir data/papers --extension pdf

# 2. 批量构建向量库
python src/cli.py build --paper-dir data/papers/

# 3. 查看构建结果
python src/cli.py info

# 4. 添加新的 PDF 文件(追加模式)
python src/cli.py build --paper data/papers/new_paper.pdf --append

问答模式

# RAG 模式(基于向量库)
python src/qa_system.py --mode rag

# 通用模式(不使用向量库)
python src/qa_system.py --mode general

# 自动模式(默认)
python src/qa_system.py

测试

# 运行所有测试
pytest

# 运行特定测试
pytest tests/test_chunking.py

# 查看覆盖率
pytest --cov=src tests/

项目结构

.
├── src/
│   ├── core/          # 核心模块(向量库、检索器、Embedding)
│   ├── loaders/       # 文档加载
│   ├── chunking/      # 分块处理
│   ├── llm/           # LLM 客户端
│   ├── cli.py         # 命令行工具
│   └── qa_system.py   # 问答系统
├── data/
│   ├── papers/        # PDF 论文
│   ├── dict/          # 科研词典
│   └── metadata.json  # 元数据存储
├── tests/             # 测试文件
├── .env               # 环境变量配置
├── .env.example       # 环境变量模板
└── requirements.txt   # 依赖列表

配置说明

所有配置通过 .env 文件进行管理:

Embedding 配置

  • EMBEDDING_MODEL: 模型名称(embedding-3)
  • EMBEDDING_DIM: 向量维度(512/1024/2048)
  • EMBEDDING_API_KEY: API Key
  • EMBEDDING_BASE_URL: API 基础 URL(用于代理或私有部署)

LLM 配置

  • LLM_MODEL: 模型名称(glm-4.5-air / glm-4-plus / glm-4-flash 等)
  • LLM_TEMPERATURE: 温度参数
  • LLM_MAX_TOKENS: 最大生成 token 数
  • LLM_API_KEY: API Key
  • LLM_BASE_URL: API 基础 URL(用于代理或私有部署)

检索配置

  • RETRIEVAL_BM25_K: BM25 检索 top-k
  • RETRIEVAL_VECTOR_K: 向量检索 top-k
  • RETRIEVAL_RRF_K: RRF 合并参数
  • RETRIEVAL_CUSTOM_DICT_PATH: BM25 自定义词典路径

分块配置

  • CHUNKING_MIN_SIZE: 最小块大小(token 数)
  • CHUNKING_MAX_SIZE: 最大块大小
  • CHUNKING_OVERLAP: 截断时的重叠大小
  • CHUNKING_SKIP_FORMULAS: 是否过滤公式块

技术栈

  • 向量数据库: FAISS
  • 检索方式: BM25 + 向量混合检索
  • Embedding: embedding-3
  • LLM: GLM-4.5-air
  • 文档解析: OpenDataLoader

License

MIT

About

llm基于构建的知识向量库进行问题回答

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages