项目简介
主要特点
1. 完全本地运行:
不需要联网保护数据隐私,即使在普通笔记本电脑上也能运行
2. 简单易用:
拖放上传 PDF 文档,通过对话框提问获得基于文档内容的准确回答
3. 智能理解:
能理解文档的上下文,结合关键词和语义的混合搜索,可以处理复杂的问题
4. 灵活配置:
支持多种本地模型,可选择不同的数据库,适合个人或团队使用
「系统三层架构」
1. 前端层
使用 @streamlit 构建交互界面,提供文档上传和聊天功能,简洁直观的用户体验
2. 核心处理层
RAGLite:处理文档并建立知识索引,本地 LLM:使用 llama-cpp-python 运行 Llama 模型,混合搜索引擎:结合语义和关键词匹配,支持多种模型配置选项
3. 存储层
PostgreSQL 数据库存储文档内容,向量存储用于语义检索,支持本地或云端部署
快速开始
要立即进行测试,请使用这些经过测试的模型配置:
# LLM Model
bartowski/Llama-3.2-3B-Instruct-GGUF/Llama-3.2-3B-Instruct-Q4_K_M.gguf@4096
# Embedder Model
lm-kit/bge-m3-gguf/bge-m3-Q4_K_M.gguf@1024
这些模型在性能和资源使用之间实现了良好的平衡,并且经过验证,即使在具有 8GB RAM 的 MacBook Air M2 上也能很好地协同工作。
模型设置
RAGLite 使用 llama-cpp-python 扩展了 LiteLLM,支持 llama.cpp 模型。要选择 llama.cpp 模型(例如,来自 bartowski 的集合),请使用“llama-cpp-python/<hugging_face_repo_id>/@<n_ctx>”形式的模型标识符,其中 n_ctx 是一个可选参数,用于指定模型的上下文大小。
-
LLM Model Path Format:
LLM模型路径格式:
llama-cpp-python/<repo>/<model>/<filename>@<context_length>
例子:
bartowski/Llama-3.2-3B-Instruct-GGUF/Llama-3.2-3B-Instruct-Q4_K_M.gguf@4096
2 嵌入器模型路径格式:
llama-cpp-python/<repo>/<model>/<filename>@<dimension>
例子:
lm-kit/bge-m3-gguf/bge-m3-Q4_K_M.gguf@1024
数据库设置
该应用程序支持多个数据库后端:
-
PostgreSQL (推荐):
-
只需点击几下即可在Neon创建免费的无服务器 PostgreSQL 数据库
-
获得即时配置和扩展到零的功能
-
连接字符串格式:
postgresql://user:pass@ep-xyz.region.aws.neon.tech/dbname
项目链接
https://github.com/Shubhamsaboo/awesome-llm-apps/tree/main/rag_tutorials/local_hybrid_search_rag
扫码加入技术交流群,备注「开发语言-城市-昵称」
(文:GitHubStore)