当前位置: 首页 > 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"])

相关文章:

  • 云原生--核心组件-容器篇-2-认识下Docker(三大核心之镜像,容器,仓库)
  • 【Pandas】pandas DataFrame rdiv
  • 神经网络与计算机视觉
  • 计算机视觉中的二值马尔科夫随机场
  • Spring Boot 升级指南(2.x → 3.x)
  • 北斗导航 | 基于Transformer+LSTM+激光雷达的接收机自主完好性监测算法研究
  • Adriuno:编程语言基础
  • 【Java】IntelliJ IDEA 社区版安装
  • 关于GoWeb(1)
  • win软件图标提取工具软件下载及使用教程
  • 通过门店销售明细表用SQL得到每月每个门店的销冠和按月的同比环比数据
  • Spring Boot 连接 Microsoft SQL Server 实现登录验证
  • Linux:进程间通信->命名管道
  • Kafka + Kafka-UI
  • RAG vs 微调:大模型知识更新的最优解之争
  • TypeScript 中 Map 的全面指南:从基础到高级应用
  • 观察者模式 (Observer Pattern)
  • 【Android】app调用wallpaperManager.setBitmap的隐藏权限
  • Redux和MobX有什么区别
  • 3、LangChain基础:LangChain Tools Agent
  • 牛市早报|商务部:目前中美之间未进行任何经贸谈判
  • 上海车展的“老头乐”,又升级了
  • 上海举行金融服务企业“走出去”推进大会
  • 商务部新闻发言人:截至目前,中美之间未进行任何经贸谈判
  • 2024年上海发生科技融资997起,位于全国第一
  • 限制再放宽!新版市场准入负面清单缩减到106项