先看效果,我上传了一个pdf如下:
上传之后做向量化处理,处理完成之后,就可以开始问答了。结果如下:
开始动手搭建自己的知识库!!!
第一步:安装ollama
此步骤省略,不会可以看这篇文章有详细的过程:ollama在windows系统上安装总结以及注意事项
ollama提供的有api服务,不仅仅使用命令行来使用,也可以将应用程序连接到 Ollama API 。这样就可以把 AI 的功能整合到自己的软件里。
以下是如何连接和使用 Ollama API 的步骤:
- 默认地址和端口:Ollama API 的默认地址是http://localhost:11434。
- 可以通过系统环境变量修改端口号。如变量名:OLLAMA_HOST
变量值(端口)::8999 。注意修改之后一定要重启ollama服务。 - 我这里没有做任何更改,直接使用的是默认的:
具体的api请求格式请看官网:ollama官网api
我在本地用api测试如下:
第二步:AnythingLLM安装
下载地址:AnythingLLM安装
下载好之后,双击下一步安装即可。
安装完成之后,桌面会有一个
双击打开如下:
搭建一个本地知识库,会涉及到三个关键:
- LLM Model,大语言模型。它负责处理和理解自然语言。
- Embedding Model,嵌入模型。它负责把高维度的数据转化为低维度的嵌入空间。这个数据处理过程在RAG中非常重要。
- Vector Store,向量数据库,专门用来高效处理大规模向量数据。
开始配置,直接点击Get started。
我这里已经配置好了,打开后直接是这样的界面了
- 本地大模型选择
选择 Ollama,填入 Ollama 的 http://127.0.0.1:11434 端口,然后选择你下载的模型。当然你也可以使用 OpenAI,使用更强大的云端模型,提供基础模型支持。但这样的话,就不是完全本地化的私有部署了。
LLM Preference配置如下:
LLM provider: Ollama
URL:http://127.0.0.1:11434
Chat Model Selection: 选择你们安装的模型,我的是gemma:latest
Token context window: 4096
- Embedding 配置
可以选择:https://ollama.com/library/nomic-embed-text 或者 AnythingLLM 自带的 AnythingLLMEmbedder。
如果选择nomic-embed-text首先在ollama里拉取。
我这里选择的是nomic-embed-text
Embedding :选择 ollama
Ollama Base URL:http://127.0.0.1:11434
Embedding Model Selection: nomic-embed-text:latest
Token context window: 8192
- 向量数据库配置
AnythingLLM 默认使用内置的向量数据库 LanceDB。
这是一款无服务器向量数据库,可嵌入到应用程序中,支持向量搜索、全文搜索和 SQL。
我们也可以选择 Chroma、Milvus、Pinecone 等向量数据库。
我这里选择是内置向量数据库选择LanceDB。
- 接下来就算是完成了,应该是这样的界面,如果是第一次配置
直接下一步 - 会让你填写信息,可填可不填
- 创建工作区
- 进入工作区聊天界面
- 导入外部 Documents
AnythingLLM 可以支持 PDF、TXT、DOCX 等文档,可以提取文档中的文本信息,经过嵌入模型(Embedding Models),保存在向量数据库中,并通过一个简单的 UI 界面管理这些文档。为管理这些文档,AnythingLLM 引入工作区(workspace)的概念,作为文档的容器,可以在一个工作区内共享文档,但是工作区之间隔离。AnythingLLM 既可以上传文档,也可以抓取网页信息。
将文档保存嵌入工作区向量数据库
9. 对话问答测试
到这里就结束了。就已经搭建好了自己的一个本地的知识库。
更改设置的话:
点击空间的设置按钮并切换为Query状态后,模型将仅在找到文档上下文时提供答案(回答会更加绑定于知识库)。
修改前面的推理模型或者嵌入模型,以及数据库。