|
|
1 miesiąc temu | |
|---|---|---|
| .. | ||
| car_info_knowledge_db | 1 miesiąc temu | |
| chroma_db1 | 1 miesiąc temu | |
| chroma_db1_db | 1 miesiąc temu | |
| investment_knowledge_db | 1 miesiąc temu | |
| my_knowledge_db | 1 miesiąc temu | |
| 02-2.RAG_optimize_task.py | 1 miesiąc temu | |
| 02_RAG_task.py | 1 miesiąc temu | |
| 3.RAG系统搭建实战.md | 1 miesiąc temu | |
| 4.RAG全链路优化:多路召回、查询测优化、Reranker.md | 1 miesiąc temu | |
| CONFIG.md | 1 miesiąc temu | |
| HOW_TO_VIEW.md | 1 miesiąc temu | |
| README_RAG.md | 1 miesiąc temu | |
| car_info.pdf | 1 miesiąc temu | |
| check_pdf_images.py | 1 miesiąc temu | |
| quick_start.py | 1 miesiąc temu | |
| rag_test.ipynb | 1 miesiąc temu | |
| requirements.txt | 1 miesiąc temu | |
| show_chunks.py | 1 miesiąc temu | |
| simple_view.py | 1 miesiąc temu | |
| test_pdf.py | 1 miesiąc temu | |
| test_rag.py | 1 miesiąc temu | |
| view_chunks.py | 1 miesiąc temu | |
基于 LangChain 构建的检索增强生成(RAG)系统,用于对《疯狂的里海 · 投资方法论》进行智能问答。
用户问题
↓
检索器将问题转为向量
↓
在向量库中查找语义最近的文档块
↓
返回 Top-K 相关文档
↓
拼接上下文 + 问题 → 大模型生成答案
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
在项目根目录的 .env 文件中配置以下API Key:
# DeepSeek API(用于大语言模型)
OPENAI_API_KEY=your_deepseek_api_key
OPENAI_API_BASE=https://api.deepseek.com/v1
MODEL_NAME=deepseek-chat
# DashScope API(用于文本向量化)
DASHSCOPE_API_KEY=your_dashscope_api_key
EMBEDDING_MODEL=text-embedding-v3
获取 API Key:
python 02_RAG_task.py
首次运行会自动构建知识库:
后续运行会直接加载已有的向量数据库。
from 02_RAG_task import RAGSystem
# 创建 RAG 系统实例
rag = RAGSystem(
pdf_path=r"D:\investment\疯狂的里海 · 投资方法论 — 基于 367 篇投资周记提炼.pdf",
persist_directory="./investment_knowledge_db"
)
# 构建知识库(首次运行)
rag.build_knowledge_base()
# 或者加载已有知识库
# rag.load_vectorstore()
# rag.create_retriever()
# 提问
answer = rag.query("什么是价值投资的核心原则?")
print(answer)
# 步骤1:加载文档
pages = rag.load_pdf()
# 步骤2:清洗数据
rag.clean_all_pages()
# 步骤3:分块
docs = rag.split_documents(chunk_size=800, chunk_overlap=160)
# 步骤4:创建向量库
vectorstore = rag.create_vectorstore()
# 步骤5:创建检索器
retriever = rag.create_retriever(k=3)
# 步骤6:检索相关文档
relevant_docs = rag.retrieve("投资策略有哪些?")
# 步骤7:生成答案
answer = rag.generate_answer("投资策略有哪些?", relevant_docs)
chunk_size:每个块的最大字符数(推荐 500-1000)chunk_overlap:相邻块之间的重叠字符数(推荐 chunk_size 的 10%-20%)# 调整分块大小
rag.split_documents(chunk_size=1000, chunk_overlap=200)
k:返回的最相关文档数量(推荐 3-5)# 返回更多相关文档
rag.create_retriever(k=5)
02_RAG_study/
├── 02_RAG_task.py # RAG系统主程序
├── README_RAG.md # 本说明文档
├── investment_knowledge_db/ # 向量数据库存储目录(自动生成)
│ ├── chroma.sqlite3
│ └── ...
├── rag_test.ipynb # 测试笔记本
└── 3.RAG系统搭建实战.md # RAG系统搭建教程
原因:环境变量未配置
解决:在 .env 文件中添加 DASHSCOPE_API_KEY=your-api-key
原因:PDF 路径配置错误
解决:修改 main() 函数中的 pdf_path 变量,指向正确的 PDF 文件路径
原因:向量数据库损坏或版本不兼容
解决:删除 investment_knowledge_db 目录,重新构建知识库
优化建议:
chunk_size 和 chunk_overlap 参数k 值以获取更多相关文档可以基于此系统扩展:
MIT License