当前位置: 首页 > news >正文

Dify中的weaviate向量数据库操作

一.安装weaviate客户端

1.Dify 0.6.9中weaviate信息

在Dify 0.6.9版本中weaviate容器信息如下:

# The Weaviate vector store.
weaviate:image: semitechnologies/weaviate:1.19.0restart: alwaysvolumes:# Mount the Weaviate data directory to the container.- ./volumes/weaviate:/var/lib/weaviateenvironment:# The Weaviate configurations# You can refer to the [Weaviate](https://weaviate.io/developers/weaviate/config-refs/env-vars) documentation for more information.QUERY_DEFAULTS_LIMIT: 25AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false'PERSISTENCE_DATA_PATH: '/var/lib/weaviate'DEFAULT_VECTORIZER_MODULE: 'none'CLUSTER_HOSTNAME: 'node1'AUTHENTICATION_APIKEY_ENABLED: 'true'AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih'AUTHENTICATION_APIKEY_USERS: 'hello@dify.ai'AUTHORIZATION_ADMINLIST_ENABLED: 'true'AUTHORIZATION_ADMINLIST_USERS: 'hello@dify.ai'ports:- "8080:8080"- "50051:50051"

2.weaviate客户端版本

使用weaviate客户端版本为weaviate-client~=3.21.0如下:

  • ~= 是一种版本兼容性运算符,表示兼容特定版本的微版本更新。

  • 3.21.0 表示该依赖项的最低版本要求。

  • 具体来说,~=3.21.0 表示兼容任何大于等于 3.21.0 但小于 3.22.0 的版本。也就是说,它会匹配 3.21.x 系列中的所有版本,但不会匹配 3.22.0 或更高版本。

安装命令为pip install weaviate-client~=3.21.0

二.Dify测试知识库

1.创建知识库和上传文档

在Dify中创建测试知识库:

然后上传测试文档:

使用自定义分段规则,得到2个段落:

2.datasets数据表

datasets数据表:即知识库。

(1)index_struct

{"type": "weaviate", "vector_store": {"class_prefix": "Vector_index_1be106ff_73cc_403e_8981_31800fd0fa1c_Node"}
}

其中,1be106ff_73cc_403e_8981_31800fd0fa1c是datasets表中id,即知识库id。

(2)retrieval_model

{"top_k": 2,"search_method": "semantic_search","reranking_model": {"reranking_model_name": "","reranking_provider_name": ""},"score_threshold": null,"reranking_enable": false,"score_threshold_enabled": false
}

3.documents数据表

documents数据表:即知识库中的每个文档。

(1)dataset_process_rule_id

619efb69-aa7f-4546-ae3a-c59e5eb4a106

对应dataset_process_rules数据表内容为

{"pre_processing_rules": [{"id": "remove_extra_spaces","enabled": true}, {"id": "remove_urls_emails","enabled": true}],"segmentation": {"separator": "\n","max_tokens": 500,"chunk_overlap": 50}
}

(2)doc_form

text_model

4.document_segments数据表

document_segments数据表,即知识库中每个文档的每个分段。

(1)index_node_id

索引节点id如下:

45886682-2adf-4af5-b0cc-4a247682e7fe
aced7553-2cfc-4faf-a9a1-c8cbf3f6f7b3

(2)index_node_hash

索引节点哈希值如下:

5.embeddings数据表

embeddings数据表:即知识库中每个文档的每个分段的嵌入编码。

(1)embedding是什么

0x80059509480000000000005D942847......575481EC68652E

def set_embedding(self, embedding_data: list[float]):self.embedding = pickle.dumps(embedding_data, protocol=pickle.HIGHEST_PROTOCOL)

这行代码使用 Python 的 pickle 模块将 embedding_data 对象序列化为一个字节流,以便于存储或传输。

  • pickle.dumps(embedding_data): pickle.dumps 函数将 embedding_data 对象转换为一个字节流。这个字节流可以被存储或者传输,然后在需要的时候通过 pickle.loads 函数重新转换(反序列化)为原始对象。

  • protocol=pickle.HIGHEST_PROTOCOL: protocol 参数是一个可选参数,用于指定序列化和反序列化时使用的协议版本。pickle.HIGHEST_PROTOCOL 表示使用 pickle 模块当前支持的最高协议版本。不同的协议版本在功能和效率上有所不同,使用最高版本的协议通常可以获得最好的性能。

三.weaviate基本操作

1.weaviate连接和操作

首先连接weaviate客户端,然后查询指定class_name的schema和data_object。

import weaviateWEAVIATE_URL = "http://127.0.0.1:8080"
WEAVIATE_API_KEY = "WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih"
client = weaviate.Client(url = WEAVIATE_URL,  # 指向weaviate的urlauth_client_secret = weaviate.AuthApiKey(WEAVIATE_API_KEY)  # 使

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • openssh9.8p1更新 修复漏洞(CVE-2024-6387)
  • 成为编程大佬!!——数据结构与算法(1)——算法复杂度!!
  • 伯克利、斯坦福和CMU面向具身智能端到端操作联合发布开源通用机器人Policy,可支持多种机器人执行多种任务
  • 2.Date类型的请求参数
  • 模拟面试001-Java开发工程师+简历+问题+回答
  • 昇思25天学习打卡营第1天|小试牛刀
  • 虚幻引擎中增强输入映射中鼠标输入无反应,怎么办?
  • SQLite 命令行客户端 + HTA 实现简易UI
  • 深入解析CSS中的!important规则:优先级与最佳实践
  • 企业数字化转型中的低代码开发平台应用:释放创新潜能
  • ADOQuery 查询MSSQL存储过程一个莫名其妙的错误;
  • 昇思25天学习打卡营第14天|静态图加速
  • Emacs 的优点及与 DE 的比较
  • 如何在抖音小程序上展示VR全景?
  • C#中的类
  • 【5+】跨webview多页面 触发事件(二)
  • Consul Config 使用Git做版本控制的实现
  • ES6语法详解(一)
  • go语言学习初探(一)
  • Hexo+码云+git快速搭建免费的静态Blog
  • JavaScript异步流程控制的前世今生
  • Less 日常用法
  • Linux下的乱码问题
  • Vue2.0 实现互斥
  • vue2.0项目引入element-ui
  • vue的全局变量和全局拦截请求器
  • 初探 Vue 生命周期和钩子函数
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 第十八天-企业应用架构模式-基本模式
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 如何编写一个可升级的智能合约
  • 自制字幕遮挡器
  • 走向全栈之MongoDB的使用
  • 容器镜像
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #Z2294. 打印树的直径
  • #数据结构 笔记一
  • (3) cmake编译多个cpp文件
  • (4)(4.6) Triducer
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (k8s中)docker netty OOM问题记录
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (三分钟)速览传统边缘检测算子
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一) 初入MySQL 【认识和部署】
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)编辑寄语:因为爱心,所以美丽
  • .net 获取url的方法
  • .Net 知识杂记
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .Net接口调试与案例
  • @EnableAsync和@Async开始异步任务支持