能在个人电脑上运行的智能文档助手

项目简介

开源的能在个人电脑上运行的智能文档助手,只需上传 PDF 文件,就能通过对话方式询问文档内容,系统会给出准确的答案 —— 就像有个智能助手帮你快速理解文档核心内容」
功能强大的文档问答应用程序,利用混合搜索 (RAG) 和本地LLMs获得全面的答案。该系统采用 RAGLite 构建,可实现强大的文档处理和检索,并采用 Streamlit 构建直观的聊天界面,将特定于文档的知识与本地LLM功能相结合,提供准确的上下文响应。

主要特点

1. 完全本地运行:

不需要联网保护数据隐私,即使在普通笔记本电脑上也能运行

2. 简单易用:

拖放上传 PDF 文档,通过对话框提问获得基于文档内容的准确回答

3. 智能理解:

能理解文档的上下文,结合关键词和语义的混合搜索,可以处理复杂的问题

4. 灵活配置:

支持多种本地模型,可选择不同的数据库,适合个人或团队使用

「系统三层架构」

1. 前端层

使用 @streamlit 构建交互界面,提供文档上传和聊天功能,简洁直观的用户体验

2. 核心处理层

RAGLite:处理文档并建立知识索引,本地 LLM:使用 llama-cpp-python 运行 Llama 模型,混合搜索引擎:结合语义和关键词匹配,支持多种模型配置选项

3. 存储层

PostgreSQL 数据库存储文档内容,向量存储用于语义检索,支持本地或云端部署


快速开始

要立即进行测试,请使用这些经过测试的模型配置:

# LLM Modelbartowski/Llama-3.2-3B-Instruct-GGUF/Llama-3.2-3B-Instruct-Q4_K_M.gguf@4096
# Embedder Modellm-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 是一个可选参数,用于指定模型的上下文大小。

  1. 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)

发表评论