跳转至

AnythingLLM 私有知识库

为什么要学 AnythingLLM

AnythingLLM 是一个全栈的私有 AI 知识库解决方案,让你能够将文档(PDF、Word、网页、代码等)转化为可对话的知识库。与单纯的 RAG 框架不同,AnythingLLM 提供了完整的桌面/Web 应用界面、内置向量数据库、多用户管理和 Agent 功能,真正做到开箱即用。对于需要在企业内部搭建知识问答系统而不想写代码的团队来说,这是最低门槛的选择。


核心概念

概念白话解释用途
Workspace工作空间隔离的知识库单元,可独立配置模型和文档
Document文档上传的各类文件,被切片后存入向量库
Embedding向量嵌入将文本转为数字向量便于语义搜索
Vector DB向量数据库存储和检索文档的语义向量
Agent智能体可调用工具(搜索、计算等)的 AI
Thread对话线程单个对话的上下文历史
Workspace Settings工作空间设置每个空间独立的模型、温度、提示词配置

安装配置

桌面版安装

从 GitHub Releases 下载对应系统的安装包: - Windows: .exe 安装器 - macOS: .dmg - Linux: .AppImage

Docker 部署(生产推荐)

docker pull mintplexlabs/anythingllm

docker run -d \
  --name anythingllm \
  -p 3001:3001 \
  -v $PWD/anythingllm-storage:/app/server/storage \
  -v $PWD/anythingllm-env:/app/server/.env \
  --env-file .env \
  mintplexlabs/anythingllm

环境变量配置

# .env 文件
# LLM 提供者配置
LLM_PROVIDER=ollama
OLLAMA_BASE_PATH=http://host.docker.internal:11434
OLLAMA_MODEL_PREF=llama3

# 向量数据库
VECTOR_DB=lancedb  # 内置,无需额外部署
# 或使用外部向量库
# VECTOR_DB=chroma
# CHROMA_ENDPOINT=http://localhost:8000

# Embedding 模型
EMBEDDING_ENGINE=ollama
EMBEDDING_MODEL_PREF=nomic-embed-text

# 认证
AUTH_TOKEN=your-secret-token
JWT_SECRET=your-jwt-secret

对接 LLM 后端

支持的 LLM 提供者: - Ollama(本地推荐) - OpenAI / Azure OpenAI - Anthropic - LocalAI - LM Studio - text-generation-webui - Mistral API


快速上手

初始设置流程

  1. 启动后访问 http://localhost:3001
  2. 创建管理员账户
  3. 选择 LLM 提供者(如 Ollama)
  4. 选择 Embedding 模型
  5. 选择向量数据库(默认 LanceDB 无需配置)
  6. 创建第一个 Workspace

上传文档

支持的格式: - PDF、DOCX、TXT、CSV - 网页 URL(自动抓取) - YouTube 链接(提取字幕) - GitHub 仓库 - Confluence 页面

# 也可通过 API 上传
curl -X POST http://localhost:3001/api/v1/document/upload \
  -H "Authorization: Bearer your-token" \
  -F "file=@document.pdf"

开始对话

上传文档并嵌入后,在 Workspace 中直接提问: - "这份文档的主要结论是什么?" - "第三章讨论了哪些技术方案?" - "帮我总结所有关于性能优化的建议"

API 使用

import requests

BASE_URL = "http://localhost:3001/api/v1"
HEADERS = {"Authorization": "Bearer your-token"}

# 发送消息
response = requests.post(
    f"{BASE_URL}/workspace/my-workspace/chat",
    headers=HEADERS,
    json={
        "message": "总结文档的核心观点",
        "mode": "chat"  # chat 或 query
    }
)
print(response.json()["textResponse"])

进阶用法

多工作空间策略

├── 技术文档空间
│   ├── API 文档
│   ├── 架构设计文档
│   └── 配置: CodeLlama + 低温度
├── 产品知识空间
│   ├── PRD 文档
│   ├── 用户反馈
│   └── 配置: GPT-4 + 中温度
└── HR 政策空间
    ├── 员工手册
    ├── 制度文件
    └── 配置: 严格提示词 + 高精度

自定义提示词

在每个 Workspace 的设置中可以自定义系统提示词:

"你是公司内部技术知识库助手。基于提供的文档内容回答问题。
规则:
1. 只基于文档内容回答,不要编造信息
2. 如果文档中没有相关信息,明确说明
3. 引用时标注文档来源
4. 使用中文回答"

Agent 配置

{
  "agent": {
    "provider": "ollama",
    "model": "llama3",
    "tools": [
      "web-search",
      "web-scraper", 
      "sql-query",
      "chart-generation",
      "save-to-file"
    ]
  }
}

细粒度权限管理

# 创建多级用户
# Admin → 完全控制
# Manager → 管理特定工作空间
# User → 只能在分配的工作空间中对话

# 通过 API 管理用户
curl -X POST http://localhost:3001/api/v1/admin/users/new \
  -H "Authorization: Bearer admin-token" \
  -d '{
    "username": "developer1",
    "password": "secure-pass",
    "role": "default"
  }'

嵌入式集成

<!-- 在网页中嵌入聊天窗口 -->
<script
  data-embed-id="your-embed-id"
  data-base-api-url="http://localhost:3001/api/embed"
  src="http://localhost:3001/embed/anythingllm-chat-widget.min.js">
</script>

定时同步文档

#!/bin/bash
# sync-docs.sh - 定时同步目录文档到 AnythingLLM
DOCS_DIR="/path/to/docs"
API_URL="http://localhost:3001/api/v1"
TOKEN="your-token"

find "$DOCS_DIR" -name "*.md" -newer /tmp/last-sync | while read file; do
  curl -X POST "$API_URL/document/upload" \
    -H "Authorization: Bearer $TOKEN" \
    -F "file=@$file"
done

touch /tmp/last-sync

# 添加到 crontab
# 0 */6 * * * /path/to/sync-docs.sh

常见问题

Q: 文档切片效果不好,回答不准确?

  • 调整 chunk size(默认 1000 字符,技术文档可改为 1500)
  • 调整 chunk overlap(默认 20%,可增加到 30%)
  • 对 PDF 进行预处理,去除页眉页脚

Q: 向量搜索返回的结果不相关?

  • 尝试不同的 Embedding 模型(nomic-embed-text 比较平衡)
  • 增加 topK 值获取更多候选结果
  • 在 Workspace 中调整相似度阈值

Q: 如何处理中文文档效果不好的问题?

  • 使用支持中文的 Embedding 模型(如 bge-base-zh-v1.5)
  • 确保 LLM 本身支持中文(如 Qwen、ChatGLM)
  • 检查文档编码是否为 UTF-8

Q: 能否对接多个 LLM?

可以。每个 Workspace 可以独立设置不同的 LLM 提供者和模型,实现: - 编码问题用 CodeLlama - 通用问答用 GPT-4 - 中文场景用 Qwen


参考资源

  • GitHub:https://github.com/Mintplex-Labs/anything-llm
  • 文档:https://docs.anythingllm.com/
  • API Reference:https://docs.anythingllm.com/api-reference
  • Docker Hub:https://hub.docker.com/r/mintplexlabs/anythingllm
  • Discord:https://discord.gg/6UyHPeGZAC