Anything LLM是一款基于RAG架构的本地知识库工具,能够将文档、网页等数据源与本地运行的大语言模型(LLM)相结合,构建个性化的知识库问答系统。它支持多种主流模型的API接入方式,如OpenAI、DeepSeek等。下载和安装过程都比较简单,这里就不详细介绍了。安装完成后,打开Anything LLM,第一步就是模型,这里我们选择Ollama,工具会自动读取我们本地已经安装的模型:然后下一步应该是选择Embedding(嵌入模型)和Vector Database(向量数据库)。这里有说下这两个概念:Embedding(嵌入)和Vector Database(向量数据库)- Embedding(嵌入):通过一个专门的模型来把你上传的文本、表格数据等本地文件处理成机器能理解的 “数字代码”。相似的文本在这个向量空间中距离会更近。比如,“苹果”和“水果”这两个词的嵌入向量就会比较接近,而“苹果”和“汽车”就会离得很远。
- Vector Database(向量数据库):用来存储上一步处理好的 “数字代码” 的数据库,它能够高效地存储和检索这些向量。当你有一个问题时,它会把问题转换成向量,然后在这个仓库里快速找到和问题最相关的向量。比如,你问“苹果是什么?”它会在这个仓库里找到和“苹果”相关的向量,比如“水果”“红色”“圆形”等。
然后输入一个 Workspace(工作区)名称,我们可以在不同的工作区里设置不同的知识库:初始化完成后,我们还可以去设置里更改Embedding和Vector Database:嵌入模型其实也非常重要,它处理的准确性直接决定了基于知识库回答的准确度,我们这里先选的是默认的 AnythingLLM 提供的嵌入模型,它是完全运行在本地且免费的嵌入模型。向量数据库我们也选择默认的LanceDB,它也是完全运行在本地且免费的。 初始设置完成后,我们尝试运行一下: 知识库的质量直接决定了模型基于知识库回答的效果,AI 友好的知识库结构,首先应层次清晰,按主题、领域或功能分类,建立从概括到具体的合理层级,像图书馆分类摆放书籍;还要易于检索,有精准关键词索引、全文检索功能和智能联想,方便快速定位知识;并且通过知识图谱、交叉引用建立数据关联,形成知识网络。 为了方便测试,我们让 AI 帮我生成一个测试的知识库数据,使用 MarkDown 格式: Anything LLM支持上传多种类型的文件,包括常见的文本文件(如TXT、Markdown)、文档文件(如PDF、Word、PPT、Excel)、数据文件(如CSV、JSON) 等等:我们把刚才生成的知识库文件上传上去,并且添加到当前工作区,然后保存。但是,在客户端下使用还是太局限了,Anything LLM 还提供了 API 调用的能力,这样我们就可以通过代码来灵活定制我们的使用场景,可以做很多事情,比如:私人知识管理工具、企业内部智能客服等等。 Anything LLM在本地启动的端口默认是 3001 。我们先要理解 Anything LLM 的两个概念:- Workspace:一个独立的环境,用于存储和管理与特定主题或项目相关的文件和数据。用户可以在工作区中上传文件、配置参数,并与模型进行交互。每个工作区的数据是独立的,互不干扰,方便用户对不同主题或项目进行分类管理。
- Thread:工作区中的一次具体对话记录,代表用户与模型之间的一系列交互。它会记录用户的问题和模型的回答,保持对话的连贯性。用户可以在一个工作区中创建多个线程,分别处理不同的问题或任务,方便管理和追溯每次对话的内容。
我们可以在设置 - 工具 - API 密钥下创建 API 密钥,并且查看 Anything LLM 提供的 API 文档: 可以看到,Anything LLM提了非常详细的 API,基本上客户端内能做的事情都能使用 API 调用,包括各种设置、知识库上传、与大模型交互等等 ,点开每个 API 可以看到具体的参数详情,也可以直接测试调用:最常用的当然是和大模型聊天的接口,因为Anything LLM中与大模型的交互都发生在Workspace下的Thread中:我们看到关键的两个参数是slug和threadSlug,其实这两个参数就分别代表Workspace和Thread的唯一标识,在客户端我们是看不到这两个标识的,我们可以通过接口创建新的Workspace和Thread来获取,或者通过接口查询已有的Workspace和Thread的slug: |