# PythonRAG **Repository Path**: shawn0411/python-rag ## Basic Information - **Project Name**: PythonRAG - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-15 - **Last Updated**: 2026-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Python RAG 基于 LangChain + Chroma 的检索增强生成(RAG)系统,支持中文 PDF 文档的索引与问答。 ## 环境要求 - Python >= 3.12 - 可用的 OpenAI 兼容 API(或使用其他兼容接口) ## 安装 ```bash pip install -r requirements.txt ``` ## 配置 创建 `config.yaml`(可参考 `config.yaml.example`),填入 API 密钥: ```yaml openai: api_key: "sk-xxx" # 你的 API Key api_base: "" # 自定义 API 地址(可选,默认 OpenAI 官方) embedding: api_key: "" # 留空则使用 openai.api_key api_base: "" # 留空则使用 openai.api_base model_name: "text-embedding-3-small" llm: api_key: "" # 留空则使用 openai.api_key api_base: "" # 留空则使用 openai.api_base model_name: "gpt-4o-mini" chunk: size: 500 overlap: 100 retrieval: top_k: 5 chroma: collection_name: "pdf_knowledge" ``` > **注意:** `config.yaml` 已加入 `.gitignore`,不会被提交到 git。 ## 使用方法 将 PDF 文件放入 `data/` 目录,然后执行: ### 构建索引 ```bash python main.py build # 首次构建 python main.py build --rebuild # 强制重建索引 ``` ### 单次提问 ```bash python main.py search "什么是RAG?" python main.py search "Chroma的作用是什么?" --top-k 3 ``` ### 交互式问答 ```bash python main.py chat ``` 进入交互模式后输入问题,输入 `/exit` 退出。 ### 列出文档 ```bash python main.py list ``` ## 项目结构 ``` . ├── main.py # CLI 入口 ├── config.py # 配置加载 ├── config.yaml # 配置文件(需自行创建) ├── rag_pipeline.py # RAG 流程编排 ├── pdf_loader.py # PDF 文件加载 ├── text_splitter.py # 文本分块 ├── embedder.py # 嵌入模型 ├── llm.py # 大语言模型 ├── vector_store.py # Chroma 向量库 ├── data/ # 存放 PDF 文件 └── vectordb/ # 向量库持久化目录(自动生成) ```