AI 与 LLM 集成
AI 与大语言模型(LLM)集成
相关源文件
本维基页面基于以下源文件生成:
src-ui/src/app/components/document-detail/document-detail.component.htmlsrc-ui/src/app/components/document-detail/document-detail.component.scsssrc-ui/src/app/components/document-detail/document-detail.component.spec.tssrc-ui/src/app/components/document-detail/document-detail.component.tssrc/documents/filters.pysrc/documents/management/commands/document_llmindex.pysrc/documents/serialisers.pysrc/documents/tests/test_api_custom_fields.pysrc/documents/tests/test_api_documents.pysrc/documents/tests/test_api_filter_by_custom_fields.pysrc/documents/views.pysrc/paperless/settings/__init__.pysrc/paperless/urls.pysrc/paperless_ai/client.pysrc/paperless_ai/embedding.pysrc/paperless_ai/indexing.pysrc/paperless_ai/tests/test_ai_indexing.pysrc/paperless_ai/tests/test_client.pysrc/paperless_ai/tests/test_embedding.py
Paperless-ngx 集成了人工智能和大语言模型(LLM),通过自动元数据建议和检索增强生成(RAG)来增强文档管理功能。该子系统允许用户利用外部大语言模型(LLM)提供商(如 OpenAI)或本地实例(通过 Ollama)来分析文档内容,并提供交互式聊天功能。
高层架构
AI 集成以 paperless_ai 模块为核心,该模块抽象了与各种大语言模型(LLM)后端的通信,并管理文档嵌入向量的向量存储。
自然语言到代码实体的映射
下图展示了面向用户的 AI 功能如何映射到底层后端实现。
AI 功能映射
来源: src/documents/views.py:107-166, src/paperless_ai/client.py:1-50, src/paperless_ai/indexing.py:1-40。
AI 子系统组件
AI 功能分为三个主要组件:
- AIClient: 与大语言模型(LLM)提供商交互的统一接口。它支持 Ollama 和兼容 OpenAI API 的后端
src/paperless_ai/client.py:10-80。 - 向量存储与嵌入向量: 文档被转换为数值向量(嵌入向量),并存储在 FAISS 索引中
src/paperless_ai/indexing.py:15-35。这使得系统能够找到相关文档片段供大语言模型(LLM)处理,从而实现检索增强生成(RAG)。 - 元数据建议: 使用大语言模型(LLM)分析文档文本,并根据内容建议合适的标题、通信方和标签
src/documents/views.py:112-118。
数据流:从文档到 AI 响应
下图展示了文档数据如何通过 AI 管线进行处理。
AI 数据流
来源: src/paperless_ai/embedding.py:9-179, src/paperless_ai/indexing.py:50-120, src/paperless/settings/__init__.py:95-99。
配置与管理
AI 功能通过环境变量和管理命令进行控制。关键设置包括嵌入向量后端的选择(例如 HuggingFace、OpenAI)以及大语言模型(LLM)的 API 端点 src/paperless/settings/__init__.py:91-101。
| 组件 | 代码引用 | 描述 |
|---|---|---|
| 索引目录 | LLM_INDEX_DIR | 磁盘上 FAISS 向量存储的路径 src/paperless/settings/__init__.py:99。 |
| 索引命令 | document_llmindex | 用于构建、更新或优化向量索引的管理命令 src/documents/management/commands/document_llmindex.py:1-50。 |
| 嵌入向量模型 | get_embedding_model | 初始化已配置的嵌入向量后端的工厂函数 src/paperless_ai/embedding.py:11-100。 |
详细子页面
如需更深入的技术细节,请参阅以下子页面:
大语言模型(LLM)后端与嵌入向量
详细介绍 AIClient 类、支持的后端(Ollama、类 OpenAI API)以及 FAISS 向量存储的管理。涵盖构建大语言模型(LLM)索引的管线以及 document_llmindex 命令。
AI 驱动的文档建议
解释 ai_suggestions API 动作背后的逻辑、文档内容如何格式化以供大语言模型(LLM)分析,以及前端如何向用户展示这些建议。
来源: src/documents/views.py:1-200, src/paperless_ai/embedding.py:1-179, src/paperless_ai/client.py:1-100。