知识库/字典

介绍

  • 知识库通常用于将文件切片,然后进行向量化保存
  • 可以通过直接的文本查询,根据向量相似度返回一定量匹配的内容(较快),或者将返回匹配的内容插入到模型的提示词中,由模型进行总结
  • 字典与知识库一样,只不过字典是一个比较独立的文件,一般一个至少几千条甚至几十万条,所以需要单独导入

但是字典有一个好处就是几乎不用切片,每一个词条的长度都不太长,这样搜索的时候也就能搜索到比较准确的结果

  • 字典的内容不可更改,主要原因是部分字典是富文本/html等格式的,并且有的还携带图片,所以既要允许编辑又要正常显示是比较困难的
  • 图谱型知识库并不在本帖中涉猎,将会单独讲解

图索引知识库 - #9,来自 admin

创建知识库

  • 指定知识库名和分隔长度即可
  • 词条嵌入模板用来修改嵌入时的文本,默认就是切片内容,可以不做修改

可以鼠标悬停查看模板格式

向知识库导入内容

  • 支持纯文本,srt,csv,pptx, odt, odp, ods, pdf, docx, epub,xlsx导入
  • 纯文本支持utf8及其他编码猜测(gb2312,gbk)
  • 部分文件导入时会拆分为多个子文件

    比如pdf,epub

导入字典

  • 字典的导入和创建是一体的
  • 目前支持mdict/stardict,dsl字典
  • 命名,分隔长度,模板与知识库一致
  • 图片检索表示会将字典内的图片进行OCR识别,将识别的文本替换原来的图片进行嵌入

不管是否开启此功能,图片在词条中都正常显示
目前ocr识别使用的是cpu计算,所以如果字典中有大量图片的话处理较慢

  • 提取词条将会将词条的内容写入到文件中

由于词条的文件过多,所以无明确需求的话不推荐写入,不影响查询和显示

  • 你可以从以下网站获取字典资源,如果有更好的下载网站欢迎推荐

startdict
mdict

字典/知识库查询

  • 默认情况下,直接输入即可查询返回结果
  • 限定查询某一字典及条数

未来可能会修改字段名,方便知识库和字典分开配置
list为空表示查询所有值

    "shenghuabi.knowledge.query": {
        "limit": 10,
        "list": []
    },

使用模型总结

  • 向知识库查询的值和对话中提问的值可以是两个不同的变量(模板)

不过一般都设置相同值减少一次输入

文章类型

  • 允许将文章(当前工作区)写入数据库中,然后通过文本查询
  • 查询前需要最好保证知识库是最新内容(右下角同步更新)


知识库的导入与导出

  • 将文件导入知识库后,再将整个库导出
  • 导入/导出适用于普通的知识库,图谱知识库,字典

之前字典的导入指的是将其他类型的字典导入到知识库中

  • 导出格式为tar.gz,内部有元数据及完整的qdrant数据库快照

没有转换为其他格式是因为导出的数据库包含向量数据,并且导出格式可以直接导入数据库,方便开发
导出压缩包及数据库并没有进行加密,所以也可以通过编程的方式自行处理

有详细的文字说明书了,太好了。

知识库创建不成功,下面的报错可能是哪里的问题?请大佬指点一下

[knowledge.create] TypeError: fetch failed at node:internal/deps/undici/undici:13392:13 at async globalThis.fetch (file:///d:/Programs/ShengHuaBi/resources/app/out/vs/workbench/api/node/extensionHostProcess.js:159:19800) at async bho (d:\Programs\ShengHuaBi\resources\app\extensions\shenghuabi\index.js:2915:3499) at async d:\Programs\ShengHuaBi\resources\app\extensions\shenghuabi\index.js:2917:542 at async r (d:\Programs\ShengHuaBi\resources\app\extensions\shenghuabi\index.js:2915:3748) at async d:\Programs\ShengHuaBi\resources\app\extensions\shenghuabi\index.js:2917:363 at async r (d:\Programs\ShengHuaBi\resources\app\extensions\shenghuabi\index.js:2915:3748) at async who (d:\Programs\ShengHuaBi\resources\app\extensions\shenghuabi\index.js:2915:3856) at async Object.e [as createCollection] (d:\Programs\ShengHuaBi\resources\app\extensions\shenghuabi\index.js:2915:3921) at async eqe.createCollection (d:\Programs\ShengHuaBi\resources\app\extensions\shenghuabi\index.js:2918:7838)...

额.怎么也是这个问题…您可以去阿里云盘下载1.95.18版本

本以为是个例没想到还能复现…但是这个在我自己的电脑就复现不出来蛋疼
这个问题是我为了修另一个Bug导致的.之前把请求头连接改成了close,防止短时间内请求过多,本机测试没问题,但是好像并不是每个人都正常.1.95.18改回来了(但是没设为最新版本,因为当时以为是个例)

1 个赞

1.95.18,还是这个错误


这两个地方的日志能发下吗

请问您在安装过程中系统是否存在杀毒软件/防火墙提示某个应用使用网络之类的,如果有请放行,或者关闭杀毒软件再尝试
如果您不放心的话也可以到这里自行下载数据库(1.12.3,后两个版本有bug正在联系官方解决)

刚刚把杀毒软件直接关掉了,还是同样的错误。日志如下:


向量数据库:运行中

2025-01-03 19:40:04.393 [info] 已安装
2025-01-03 19:40:04.396 [info]            _                 _    
  __ _  __| |_ __ __ _ _ __ | |_  
 / _` |/ _` | '__/ _` | '_ \| __| 
| (_| | (_| | | | (_| | | | | |_  
 \__, |\__,_|_|  \__,_|_| |_|\__| 
    |_|                           

Version: 1.12.1, build: 9c20e9e2
Access web UI at http://localhost:6333/dashboard


2025-01-03 19:40:04.397 [info] 2025-01-03T11:40:04.396046Z  WARN qdrant::settings: Config file not found: config/config    
2025-01-03T11:40:04.396086Z  WARN qdrant::settings: Config file not found: config/development    
2025-01-03T11:40:04.396538Z  INFO storage::content_manager::consensus::persistent: Loading raft state from ./storage\raft_state.json    

2025-01-03 19:40:04.399 [info] 2025-01-03T11:40:04.399452Z  WARN storage::content_manager::toc: Collection config is not found in the collection directory: ./storage\collections\article, skipping    

2025-01-03 19:40:04.400 [info] 2025-01-03T11:40:04.399559Z  WARN storage::content_manager::toc: Collection config is not found in the collection directory: ./storage\collections\啊啊, skipping    
2025-01-03T11:40:04.399833Z  WARN storage::content_manager::toc: Collection config is not found in the collection directory: ./storage\collections\看看, skipping    

2025-01-03 19:40:04.402 [info] 2025-01-03T11:40:04.402180Z  INFO qdrant: Distributed mode disabled    
2025-01-03T11:40:04.402213Z  INFO qdrant: Telemetry reporting enabled, id: 133d41ef-a6e2-46af-a2b8-766300755303    

2025-01-03 19:40:04.404 [info] 2025-01-03T11:40:04.403879Z  WARN qdrant::actix::web_ui: Static content folder for Web UI './static' does not exist    
2025-01-03T11:40:04.403957Z  INFO qdrant::actix: TLS disabled for REST API    

2025-01-03 19:40:04.492 [info] 2025-01-03T11:40:04.410364Z  INFO qdrant::tonic: Qdrant gRPC listening on 6334    
2025-01-03T11:40:04.410393Z  INFO qdrant::tonic: TLS disabled for gRPC API    
2025-01-03T11:40:04.412771Z  INFO qdrant::actix: Qdrant HTTP listening on 6333    
2025-01-03T11:40:04.412809Z  INFO actix_server::builder: Starting 15 workers
2025-01-03T11:40:04.412826Z  INFO actix_server::server: Actix runtime found; starting in Actix runtime

2025-01-03 19:40:04.494 [info] 向量数据库启动成功
2025-01-03 19:40:43.468 [info] 2025-01-03T11:40:43.467809Z  INFO storage::content_manager::toc::collection_meta_ops: Creating collection ttt    

文本到向量模型:内置

2025-01-03 19:40:42.706 [info] 初始化...设备: cpu,模型: Xenova/bge-base-zh-v1.5,类型: q8
2025-01-03 19:40:43.253 [info] 知识库配置:{"name":"ttt","type":"knowledge","graphIndex":false,"collectionList":[{"embedding":{"type":"transformers","model":"Xenova/bge-base-zh-v1.5","size":768,"baseURL":"http://127.0.0.1:11434/v1","dtype":"q8","device":"cpu"},"chunkSize":100,"collectionName":"ttt","embeddingTemplate":{"entry":{"value":"","enable":false}}}],"activateCollection":"ttt","embedding":{"type":"transformers","model":"Xenova/bge-base-zh-v1.5","size":768,"baseURL":"http://127.0.0.1:11434/v1","dtype":"q8","device":"cpu"},"chunkSize":100,"collectionName":"ttt","embeddingTemplate":{"entry":{"value":"","enable":false}}}
2025-01-03 19:40:43.269 [info] 准备创建知识库:ttt
2025-01-03 19:40:43.269 [info] 创建集合:ttt;嵌入长度:768

你试试升级下qdrant?(还是原来下载的位置,当然我估计不是这个问题…)
这个是不是创建后很快就失败了?

目前感觉挺诡异的,就是确实请求发送过去了,(因为显示之前创建的数据库文件夹,但是没创建全).
但是又发出了一个普通的请求失败异常…由于数据库不是我开发的我也不太好排查
明天我开一台虚拟机试试是哪里的问题

1 个赞

用新版的手动在cmd运行,可以观察到collection创建过程中qdrant挂掉了

D:\ShengHuaBi-Conf\qdrant>qdrant.exe
e[1;31m           _                 _    e[0m
e[1;31m  __ _  __| |_ __ __ _ _ __ | |_  e[0m
e[1;31m / _` |/ _` | '__/ _` | '_ \| __| e[0m
e[1;31m| (_| | (_| | | | (_| | | | | |_  e[0m
e[1;31m \__, |\__,_|_|  \__,_|_| |_|\__| e[0m
e[1;31m    |_|                           e[0m

e[32mVersion:e[0m e[1;34m1.12.5e[0m, e[32mbuild:e[0m e[1;34m27260abde[0m
e[32mAccess web UI ate[0m e[1;4;34mhttp://localhost:6333/dashboarde[0m

e[2m2025-01-03T12:10:16.972368Ze[0m e[33m WARNe[0m e[2mqdrant::settingse[0me[2m:e[0m Config file not found: config/config
e[2m2025-01-03T12:10:16.972588Ze[0m e[33m WARNe[0m e[2mqdrant::settingse[0me[2m:e[0m Config file not found: config/development
e[2m2025-01-03T12:10:16.973251Ze[0m e[32m INFOe[0m e[2mstorage::content_manager::consensus::persistente[0me[2m:e[0m Loading raft state from ./storage\raft_state.json
e[2m2025-01-03T12:10:16.976571Ze[0m e[33m WARNe[0m e[2mstorage::content_manager::toce[0me[2m:e[0m Collection config is not found in the collection directory: ./storage\collections\article, skipping
e[2m2025-01-03T12:10:16.976944Ze[0m e[33m WARNe[0m e[2mstorage::content_manager::toce[0me[2m:e[0m Collection config is not found in the collection directory: ./storage\collections\ttt, skipping
e[2m2025-01-03T12:10:16.977570Ze[0m e[33m WARNe[0m e[2mstorage::content_manager::toce[0me[2m:e[0m Collection config is not found in the collection directory: ./storage\collections\ttt1, skipping
e[2m2025-01-03T12:10:16.977991Ze[0m e[33m WARNe[0m e[2mstorage::content_manager::toce[0me[2m:e[0m Collection config is not found in the collection directory: ./storage\collections\啊啊, skipping
e[2m2025-01-03T12:10:16.978278Ze[0m e[33m WARNe[0m e[2mstorage::content_manager::toce[0me[2m:e[0m Collection config is not found in the collection directory: ./storage\collections\看看, skipping
e[2m2025-01-03T12:10:16.980216Ze[0m e[32m INFOe[0m e[2mqdrante[0me[2m:e[0m Distributed mode disabled
e[2m2025-01-03T12:10:16.980379Ze[0m e[32m INFOe[0m e[2mqdrante[0me[2m:e[0m Telemetry reporting enabled, id: ffc55947-7926-42fd-9304-b3b0d6b34b27
e[2m2025-01-03T12:10:16.980904Ze[0m e[32m INFOe[0m e[2mqdrante[0me[2m:e[0m Inference service is not configured.
e[2m2025-01-03T12:10:16.983500Ze[0m e[33m WARNe[0m e[2mqdrant::actix::web_uie[0me[2m:e[0m Static content folder for Web UI './static' does not exist
e[2m2025-01-03T12:10:16.983677Ze[0m e[32m INFOe[0m e[2mqdrant::actixe[0me[2m:e[0m TLS disabled for REST API
e[2m2025-01-03T12:10:16.989217Ze[0m e[32m INFOe[0m e[2mqdrant::tonice[0me[2m:e[0m Qdrant gRPC listening on 6334
e[2m2025-01-03T12:10:16.990524Ze[0m e[32m INFOe[0m e[2mqdrant::tonice[0me[2m:e[0m TLS disabled for gRPC API
e[2m2025-01-03T12:10:16.991725Ze[0m e[32m INFOe[0m e[2mqdrant::actixe[0me[2m:e[0m Qdrant HTTP listening on 6333
e[2m2025-01-03T12:10:16.993983Ze[0m e[32m INFOe[0m e[2mactix_server::buildere[0me[2m:e[0m Starting 15 workers
e[2m2025-01-03T12:10:16.994466Ze[0m e[32m INFOe[0m e[2mactix_server::servere[0me[2m:e[0m Actix runtime found; starting in Actix runtime
e[2m2025-01-03T12:10:20.647649Ze[0m e[32m INFOe[0m e[2mstorage::content_manager::toc::collection_meta_opse[0me[2m:e[0m Creating collection ttt1

D:\ShengHuaBi-Conf\qdrant>

感谢提供信息.我去看看社区有没有解决方法

假如您是win10及以上的设备(以下不支持…);试下玄学?

1 个赞

玄学真的好使,装完qdrant就不会挂了。之前好像看到您提过redist,但怎么也没想到我这个跟其有关 :rofl:
感谢感谢

1 个赞