|
||
---|---|---|
demo_documents | ||
examples | ||
scripts | ||
src/base_rag | ||
test_docs | ||
test_files | ||
.gitignore | ||
FILE_PROCESSING_GUIDE.md | ||
LICENSE | ||
QUICK_START.md | ||
README.md | ||
RERANK_GUIDE.md | ||
demo_file_status.db | ||
pyproject.toml | ||
requirements.txt | ||
test_status.db |
README.md
BaseRAG 系统功能总结
概述
BaseRAG 是一个灵活的检索增强生成(RAG)框架,支持多种嵌入模型和重排策略,专注于本地部署和HuggingFace生态系统。
🎯 核心特性
1. 多种嵌入模型支持
- 本地HuggingFace模型: 支持模型名称和本地路径两种方式
- 本地API接口: 兼容OpenAI API格式的本地嵌入服务
- 自动回退机制: API不可用时自动切换到本地模型
2. 文档重排功能
- 相似度重排: 基于余弦相似度,无额外依赖
- CrossEncoder重排: 专业重排模型,效果优秀
- BGE重排: 中文支持良好的重排模型
3. 向量存储
- Chroma数据库: 自动持久化,支持多集合管理
- 线程安全: 模型缓存和并发访问保护
🔧 配置示例
基础配置
from base_rag import BaseRAG
class MyRAG(BaseRAG):
def ingest(self, documents):
self.vector_store.add_texts(documents)
def query(self, question, k=3):
return self.similarity_search_with_rerank(question, k=k)
# 配置
embedding_config = {
"type": "local",
"model_name": "sentence-transformers/all-MiniLM-L6-v2"
}
rerank_config = {
"enabled": True,
"method": "similarity",
"top_k": 3
}
rag = MyRAG(
embedding_config=embedding_config,
rerank_config=rerank_config
)
本地API配置
embedding_config = {
"type": "api",
"api_url": "http://localhost:8080",
"model": "text-embedding-model"
}
本地模型路径配置
embedding_config = {
"type": "local",
"model_path": "/path/to/your/model"
}
📁 项目结构
base_rag/
├── src/
│ └── base_rag/
│ ├── __init__.py # 包入口
│ └── core.py # 核心BaseRAG类
├── examples/
│ ├── quick_start.py # 快速开始示例
│ ├── rerank_demo.py # 重排功能演示
│ └── local_api_demo.py # 本地API配置示例
├── requirements.txt # 依赖列表
├── pyproject.toml # 包配置
├── RERANK_GUIDE.md # 重排功能详细说明
└── README.md # 项目说明
🚀 快速开始
- 安装依赖
pip install -r requirements.txt
- 运行示例
# 基础功能演示
python examples/quick_start.py
# 重排功能演示
python examples/rerank_demo.py
# 本地API配置演示
python examples/local_api_demo.py
📦 可选依赖
# 本地API接口支持
pip install langchain-openai
# BGE重排支持
pip install FlagEmbedding
🔍 API参考
核心方法
similarity_search(query, k)
: 基础相似性搜索similarity_search_with_rerank(query, k)
: 带重排的搜索load_and_split_documents(file_path)
: 文档加载和分割add_documents_to_vector_store(documents)
: 添加文档到向量库
抽象方法(需实现)
ingest(*args, **kwargs)
: 文档导入逻辑query(question)
: 问答逻辑
💡 最佳实践
- 开发阶段: 使用本地模型,快速原型验证
- 生产环境:
- 小规模: 本地模型 + 相似度重排
- 大规模: 本地API + CrossEncoder/BGE重排
- 模型选择: 根据语言和领域需求选择合适的嵌入模型
- 重排策略: 在实际数据上测试不同重排方法的效果
🛠️ 技术特点
- 线程安全: 支持并发访问和模型缓存
- 错误处理: 完善的异常处理和回退机制
- 灵活配置: 支持多种配置方式和自定义参数
- 易于扩展: 抽象设计,便于子类实现特定业务逻辑
📋 注意事项
- 首次运行会下载模型,需要网络连接
- 重排功能会增加查询延迟,但提高结果质量
- 不同模型对硬件要求不同,请根据实际情况选择
- 建议在生产环境前进行充分测试
🔄 版本信息
- 当前版本: 0.1.0
- Python要求: >= 3.8
- 主要依赖: langchain, chromadb, sentence-transformers
更多详细信息请参考: