LocalDocs 系统是 GPT4All 的核心组件,它通过将本地文档库与聊天界面集成,实现了检索增强生成(RAG)。该系统允许用户创建文档集合,为其建立索引以便高效搜索,并在聊天互动中检索相关上下文,从而提高 AI 回答的质量和事实准确性。
有关利用 LocalDocs 结果的聊天系统信息,请参阅 聊天系统。
LocalDocs 系统提供了一种无缝的方式,可以通过用户提供的文档来增强 LLM 的响应。它处理指定文件夹中的文档,将其分解为可管理的块,生成用于语义搜索的嵌入,并创建一个可搜索的索引。在聊天互动中,它会根据用户的查询检索最相关的文档块,并用这些附加上下文增强 LLM 提示。
来源:gpt4all-chat/src/localdocs.h gpt4all-chat/src/database.h gpt4all-chat/src/embllm.h
LocalDocs 系统由几个相互连接的组件组成,它们协同工作以提供增强文档的响应。
| 组件 | 描述 | 职责 |
|---|---|---|
| LocalDocs | 主接口类 | 提供聊天系统与文档集合交互的 API |
| 数据库 | 核心存储和检索引擎 | 管理文档索引、存储和搜索功能 |
| EmbeddingLLM | 嵌入生成系统 | 为语义搜索创建文本的向量表示 |
| DocumentReader | 文档解析器 | 从各种文件格式中提取文本内容 |
| ChunkStreamer | 文本处理 | 将文档分解为可管理的块以进行索引 |
| SQLite 数据库 | 持久存储 | 存储文档块、元数据和嵌入 |
来源:gpt4all-chat/src/database.cpp gpt4all-chat/src/localdocs.cpp gpt4all-chat/src/embllm.cpp
当用户向集合添加文件夹时,系统会通过几个阶段处理文档,使其可搜索和可检索。
来源:gpt4all-chat/src/database.cpp822-837 gpt4all-chat/src/database.cpp171-197
LocalDocs 系统支持两种生成向量嵌入以实现语义搜索的方法
嵌入过程可以在应用程序设置中配置
来源:gpt4all-chat/src/embllm.cpp36-176 gpt4all-chat/src/database.cpp780-815
当用户发送提示时,LocalDocs 系统会检索相关的文档块以增强 LLM 的上下文。
检索系统采用混合方法,结合了
系统检索可配置数量的块(默认:4)以用相关上下文增强 LLM 提示。
来源:gpt4all-chat/src/database.cpp259-287 gpt4all-chat/src/chatllm.cpp929-955
LocalDocs 系统无缝集成到聊天界面中,以提供增强的响应。
来源:gpt4all-chat/src/chat.cpp107-136 gpt4all-chat/qml/ChatItemView.qml235-454
LocalDocs 系统使用 SQLite 数据库,其核心结构如下
| 表格 | 目的 | 关键字段 |
|---|---|---|
| collections | 存储用户创建的文档集合 | name, embedding_model |
| folders | 跟踪正在监控文档的文件夹 | path |
| documents | 存储有关已索引文档的信息 | document_path, document_time |
| chunks | 包含实际文档内容(分块) | chunk_text, document_id |
| embeddings | 存储块的向量嵌入 | model, chunk_id, embedding |
| chunks_fts | 用于全文搜索的虚拟表 | chunk_text, document_id |
来源:gpt4all-chat/src/database.cpp100-175 gpt4all-chat/src/database.h43-61
当 LocalDocs 系统在聊天会话期间处于活动状态时,它会遵循以下过程
来源:gpt4all-chat/src/chatllm.cpp908-955 gpt4all-chat/src/chat.cpp228-232
LocalDocs 系统可以通过应用程序设置进行配置
| 设置 | 描述 | 默认 |
|---|---|---|
| 块大小 | 文档块的大小(按单词计) | 512 |
| 检索大小 | 每次查询要检索的块数 | 4 |
| 文件扩展名 | 支持的文档文件扩展名 | .pdf, .txt, .md, .docx, .xlsx |
| 嵌入方法 | 本地或远程嵌入 | 本地 |
| Nomic API 密钥 | 远程嵌入的 API 密钥 | 无 |
| 显示引用 | 在 UI 中显示源引用 | 真 |
| 硬件加速 | 用于本地嵌入的设备 | 汽车 |
来源:gpt4all-chat/src/mysettings.cpp
LocalDocs 系统是 GPT4All 的一个强大组件,它使用户能够用自己的文档信息来增强 AI 的响应。通过将文档检索与聊天过程无缝集成,它提供了更准确、更具上下文相关性、更符合事实的响应。
该系统的架构通过其混合搜索方法、灵活的嵌入选项和高效的文档处理管道,平衡了性能和准确性。这使其适用于从个人知识管理到专业研究协助的广泛用例。