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

Weaviate使用入门:从零搭建向量数据库的完整指南

一、Weaviate简介与核心优势

Weaviate是一款开源向量搜索引擎,专为存储和检索高维向量数据设计,支持文本、图像等多种媒体类型。其核心功能包括语义搜索、问答提取、分类等,具备以下独特优势:

  • 低延迟:毫秒级响应时间,适用于实时场景。
  • 灵活扩展:支持数十亿级数据对象,模块化架构可集成自定义模型(如PyTorch、TensorFlow)。
  • 多模态支持:适配文本、图像、音视频等多种数据类型。
  • 云原生设计:提供GraphQL和REST API,无缝对接现有技术栈(如LangChain)。

二、环境搭建与部署
1. Docker快速部署

通过Docker Compose一键启动Weaviate服务:

# docker-compose.yml
version: '3.4'
services:weaviate:image: semitechnologies/weaviate:latestports:- "8080:8080"- "50051:50051"  # gRPC端口(可选)environment:AUTHENTICATION_APIKEY_ENABLED: "true"AUTHENTICATION_APIKEY_ALLOWED_KEYS: "your-api-key"

启动命令:

docker-compose up -d
2. Python客户端初始化

安装SDK并连接数据库:

import weaviate
client = weaviate.Client(url="http://localhost:8080",auth_client_secret=weaviate.AuthApiKey("your-api-key")
)

三、数据建模与Schema定义
1. 创建数据类(Class)

示例:构建一个存储技术文章的Schema:

schema = {"class": "Article","properties": [{"name": "title", "dataType": ["text"]},{"name": "content", "dataType": ["text"]},{"name": "tags", "dataType": ["text[]"]}],"vectorizer": "text2vec-transformers",  # 指定向量化模型"vectorIndexConfig": {"distance": "cosine"  # 相似度计算方式(可选:l2、dot等)}
}
client.schema.create_class(schema)
2. 自定义向量化模块

若需集成自定义模型(如Hugging Face模型),可在Docker配置中添加模块:

services:t2v-transformers:image: soulteary/t2v-transformers:2024.06.27ports:- "9090:8080"

四、数据导入与向量生成
1. 单条数据插入
data_object = {"title": "Weaviate入门指南","content": "本文介绍如何快速搭建Weaviate向量数据库...","tags": ["数据库", "AI"]
}
client.data_object.create(data_object, "Article")
2. 批量导入CSV数据

结合Pandas处理结构化数据:

import pandas as pd
df = pd.read_csv("articles.csv")
for _, row in df.iterrows():client.data_object.create({"title": row["title"],"content": row["content"],"tags": row["tags"].split(",")}, "Article")

五、向量检索实战
1. 基础语义搜索
response = client.query\.get("Article", ["title", "content"])\.with_near_text({"concepts": ["机器学习"]})\.with_limit(5)\.do()for item in response["data"]["Get"]["Article"]:print(f"标题: {item['title']}\n内容摘要: {item['content'][:100]}...")
2. 混合查询(向量+结构化过滤)
client.query\.get("Article", ["title"])\.with_where({"path": ["tags"],"operator": "ContainsAny","valueText": ["AI"]})\.with_near_vector({"vector": [0.1, -0.2, 0.5]})\.with_additional(["distance"])
http://www.xdnf.cn/news/153577.html

相关文章:

  • 区块链VS传统数据库:金融数据存储的“信任”与“效率”博弈
  • Dify 使用 excel 或者 csv 文件创建知识库
  • 跟着deepseek学golang--Go vs Java vs JavaScript三语言的差异
  • 计算机视觉与深度学习 | LSTM原理及与卡尔曼滤波的融合
  • C++17 折叠表达式
  • IP数据报发送和转发的过程
  • 腾讯云物联网平台
  • Win7 SSL证书问题
  • 小程序Npm package entry file not found?
  • 总账主数据——Part 2 科目-2
  • 【落羽的落羽 C++】vector
  • 算法习题-力扣446周赛题解
  • 通过门店销售明细表用Python Pandas得到每月每个门店的销冠和按月的同比环比数据
  • 搜广推校招面经八十二
  • Springboot集成SSE实现消息推送+RabbitMQ解决集群环境下SSE通道跨节点事件推送问题
  • 计算机网络 | Chapter1 计算机网络和因特网
  • CANape与MATLAB数据接口技术详解
  • Java进阶--面向对象设计原则
  • 基于html-css-js的尚有选页面源码详细
  • 如何解决IDE项目启动报错 error:0308010C:digital envelope routines::unsupported 问题
  • 图论---LCA(倍增法)
  • 从新手到高手:小程序开发进阶技巧分享
  • SQL 查询进阶:WHERE 子句与连接查询详解
  • Myweb项目——面试题总结
  • 多模态大语言模型arxiv论文略读(四十二)
  • ZYNQ笔记(十四):基于 BRAM 的 PS、PL 数据交互
  • Pygame字体与UI:打造游戏菜单和HUD界面
  • 【含文档+PPT+源码】基于Django的新闻推荐系统的设计与实现
  • 第八部分:缓解 RAG 中的幻觉
  • 认识哈希以及哈希表的模拟实现