使用AnythingLLM搭配ollama、deepseek搭建自己的本地知识库
使用AnythongLLM+ollama+deepseek搭建本地知识库;
ollama+deepseek可参考上篇:使用ollama快速搭建自己本地的deepseek服务-CSDN博客
下载AnythingLLM,官网:Download AnythingLLM for Desktop,根据自己的系统和架构下载安装:
下载好后安装:
等待安装:(如果不用ollama的那些库或者下载不动可以关掉跳过下载ollama的库)
安装完运行起来,打开左下角设置可以进行相关设置:
先设置为中文:
可以设置ollama:
向量数据库用默认的就好:
Embedder用默认的,或者也可以用ollama的:
或者
其他的设置默认就行;
回到主页添加工作区:
输入名字,保存:
可以直接发送消息测试下:
点击小齿轮可以进行一些设置:
聊天设置里,聊天模式可以设置查询,会只根据上下文知识库查询(必须要添加知识库才能查询到):
设置好要更新一下:
向量数据库,上下文也可以按需求设置下并更新:
点击上传文档:
点击蓝色框上传文件,或者直接拖文件上去也可以:
随便模拟了几篇日记:
将这些文档上传上去:
可以新建个文件夹,把它们放到一起:(可选操作)
这样就把这些文档移动到新建的文件夹里了:
然后把这些文档添加到当前工作区的知识库里:
然后向量化:
等一会,下面弹窗Successful就说明向量完成了:
可以对知识库进行操作,删除文档,将文档pin标记可以优先使用该文档:
然后就可以问关于知识库的东西了:
另外AnythingLLM也提供了api,但是AnythingLLM默认不提供外部访问,需要先在设置里打开开放权限:(也支持网页插件)
首先在"工具->API密钥"里生成密钥:
注意,生成完这个页面没刷新,需要重新刷一下(先切到别的页面再切回来),点击页面上的Copy API Key可以复制密钥:
点击阅读api文档,打开api文档,可以直接在里面调试:
设置密钥:
每个api都有详细介绍,也可以直接测试:
这些接口都是http的,直接http客户端就可以调用api了;
要调用聊天api,首先需要密钥(前面已经拿到了),还需要一个工作区的slug,可以通过/v1/workspaces查询出来:(如果使用workspace+thread聊天,还需要记录下thread的slug)
在聊天接口里把slug填上,下面的请求地址就自动生成了:
修改body:
改好后,点击执行:
这个是非流式的接口,所以要等全部结果生成好了才一次性返回,要LOADING一会结果:
也可以使用python代码调用api:
非流式:(注意设定自己的Authorization请求头和workspace的slug)
import requests
import json
json_data = {
"message": "日记中哪天下雪了?",
"mode": "chat",
"userId": 2,
"attachments": []
}
my_headers = {
'accept': 'application/json',
'Authorization': 'Bearer NE1H6D0-JT84EG4-P7FJN6Z-RJW9J4F',
'Content-Type': 'application/json',
}
res = requests.post(
'http://192.168.1.32:3001/api/v1/workspace/0bd51938-58cc-4d8a-aeb3-e16f70745ae3/chat',
headers=my_headers,
json=json_data)
json_obj = json.loads(res.text)
print(json_obj)
print(json_obj.get('textResponse'))
结果:(等一会一次性返回)
流式:(除了需要设置Authorization和slug,还要设置accept为text/event-stream,并且接口也改为了stream-chat)
import requests
import json
json_data = {
"message": "日记中哪天可能下雨了?",
"mode": "chat",
"userId": 2,
"attachments": []
}
my_headers = {
'accept': 'text/event-stream',
'Authorization': 'Bearer NE1H6D0-JT84EG4-P7FJN6Z-RJW9J4F',
'Content-Type': 'application/json',
}
with requests.post('http://192.168.1.32:3001/api/v1/workspace/0bd51938-58cc-4d8a-aeb3-e16f70745ae3/stream-chat'
, json=json_data, headers=my_headers, stream=True) as r:
for chunk in r.iter_content(chunk_size=10240):
if chunk:
obj = json.loads(chunk.decode('utf-8').replace('data:', ''))
if obj.get('close') is not True:
print(obj.get('textResponse'), end='')
代码执行中结果打印:(几个字几个字的返回,跟市面上那些AI聊天效果基本一样)
更多推荐
所有评论(0)