- 实施本地 RAG 系统,无需将数据发送到云端即可与私有文档进行交互。
- 通过 Ollama 集成实现语言模型和嵌入的灵活配置。
- 通过具有多用户权限控制的独立工作空间实现高级知识管理。
AnythingLLM 和 Ollama 允许您创建一个助手来查阅您自己的文档。 使用运行在计算机或服务器上的模型。Ollama 负责加载语言模型,而 AnythingLLM 提供界面、组织文件,并使用 RAG 检索相关信息。
当所有组件都在本地配置时,文档和查询无需发送到云模型提供商。然而,这种隐私保护措施可能会影响隐私。 这取决于您是否启用了网络搜索、外部 API 或其他工具。 将信息传递到团队外部。
在将 AnythingLLM 与 Ollama 连接之前,您需要准备什么?

您需要安装并运行 Ollama,以及 AnythingLLM Desktop 或 Docker 部署的实例。对于单个用户来说,桌面版更简单,而 Docker 允许通过浏览器访问 并分享安装过程。
所需资源取决于所选模型、其量化级别和上下文长度。小型模型可以完全在 CPU 上运行,但速度会较慢。拥有 7.000 亿或 8.000 亿个参数的模型通常需要更多内存,并且当 Ollama 能够利用兼容的 GPU 时,可以提供更好的体验。
不建议设置适用于所有情况的最低内存要求。下载大型模型之前,请检查其大小,并确保您的内存足以满足操作系统、AnythingLLM 和矢量数据库的需求。
下载聊天模板和嵌入模板
Ollama需要一个模型来生成答案 而且,如果您还想将其用作嵌入提供程序,则可以使用另一个专门用于将文档转换为向量的模型。
您可以使用以下命令下载两个示例模板:
ollama pull llama3.1:8b
ollama pull nomic-embed-text
第一种模型用于对话和写作回复。 nomic-embed-text 它只能生成嵌入内容,不能用作聊天模板。您可以使用以下命令查看可用模板:
ollama list
这些名称仅为示例,并非强制要求。您可以 如果团队资源有限,请选择较小的聊天模板。对于主要使用西班牙语的文档,您可能还会对 Ollama 库中提供的多语言嵌入模板感兴趣,例如: bge-m3.
在对大型文档库进行索引之前,必须先选择嵌入模型。如果之后更改模型,则需要重新处理文档以生成兼容的向量。
如何将 AnythingLLM Desktop 与 Ollama 连接
打开 AnythingLLM 设置并选择 Ollama 作为语言模型提供程序。如果两个应用程序都运行在同一台计算机上,通常情况下您会使用以下地址:
http://127.0.0.1:11434
AnythingLLM 应该会显示已下载的模板。选择您将在聊天中使用的模板,并在添加文档之前进行测试。
接下来,打开嵌入提供程序设置。您可以 选择 AnythingLLM 嵌入式模型,或者选择 Ollama 并使用嵌入模型。 之前已下载。如果您不需要其他系统,可以将 LanceDB 保留为本地矢量数据库。
不要仅仅因为模型支持就设置提升权限的上下文窗口。提升上下文权限会增加内存消耗,并可能降低响应速度。首先使用 Ollama 检测到的配置,仅在必要时才进行修改。
如何将 Docker 中的 AnythingLLM 与 Ollama 连接

当 AnythingLLM 在容器内运行时, localhost 它指向容器本身,而不是宿主机。在 Windows 或 macOS 版 Docker Desktop 中,您可以使用:
http://host.docker.internal:11434
在 Linux 系统中,该名称可能不会自动可用。您可以在启动容器时添加映射,或将其包含在 Docker Compose 文件中:
extra_hosts:
- "host.docker.internal:host-gateway"
也可能是必要的 配置 Ollama 监听可从 Docker 网络访问的地址请勿将端口 11434 直接暴露给互联网,因为 Ollama 的本地 API 不建议在没有额外保护层的情况下发布。
如果 Ollama 和 AnythingLLM 作为服务运行在同一个 Docker Compose 文件中,那么最好将它们集成到一个公共的私有网络中,并使用该服务名称,例如:
http://ollama:11434
保存地址后,请验证 AnythingLLM 是否可以显示已安装的型号,然后再继续。
添加文档并配置 RAG 系统
创建工作区并上传您想要查阅的文档。要使这些文档可通过 RAG 获取,您必须将其添加到工作区并开始处理。AnythingLLM 会将文本分割成片段,生成嵌入向量,并将其存储在向量数据库中。
当你提出问题时,系统会检索一些相关的片段,并将它们整合到发送给模型的上下文中。这减少了处理的文本量,但也意味着模型需要处理更多的文本。 它不会自动读取所有文档 每次咨询中。
如果响应中缺少相关信息,请检查检索片段的最大数量和相似度阈值。过高的阈值可能会丢弃包含响应的片段。文档建议,当 RAG 无法找到文件中存在的信息时,可以暂时尝试使用不受限制的选项。
AnythingLLM 显示的参考文献有助于识别所用文档,但并不能保证答案完全正确,也不能保证始终标明确切页码。建议在使用结果进行重要决策前,务必核实来源。
它解决了最常见的问题
如果 AnythingLLM 未检测到 Ollama,请先检查该服务是否正在运行,以及配置的地址是否可以从 AnythingLLM 运行的同一环境访问。您还可以使用以下命令验证本地 API:
curl http://localhost:11434/api/tags
如果模型出现在 Ollama 中但未出现在 AnythingLLM 中,请刷新模型列表并仔细检查是否选择了正确的提供商。在 Docker 中,问题通常与以下方面有关: 滥用 localhost 或者网络配置阻止了对主机的访问。.
当回复不准确时,请检查嵌入模型、文档语言、片段大小和相似度阈值。如果合适的片段没有到达上下文,更大的聊天模型也无法解决检索不佳的问题。
使用 Ollama 可以避免查询外部 API 的成本,但仍然会产生电力消耗、存储空间和设备维护费用。这种组合的主要优势在于能够控制文档的处理位置,并根据可用资源调整模型。
我是一名技术爱好者,已将自己的“极客”兴趣变成了职业。出于纯粹的好奇心,我花了 10 多年的时间使用尖端技术并修改各种程序。现在我专攻计算机技术和视频游戏。这是因为 5 年多来,我一直在为各种技术和视频游戏网站撰写文章,旨在以每个人都能理解的语言为您提供所需的信息。
如果您有任何疑问,我的知识范围涵盖与 Windows 操作系统以及手机 Android 相关的所有内容。我对您的承诺是,我总是愿意花几分钟帮助您解决在这个互联网世界中可能遇到的任何问题。