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

AI开发跃迁指南(第三章:第四维度2——weaviate cloud、weaviate docker安装配置及使用连接示例)

在这里插入图片描述


Weaviate简单简介和对比我们已经在上一篇《AI开发跃迁指南(第三章:第四维度1——Milvus、weaviate、redis等向量数据库介绍及对比选型)》中已经介绍过了。本篇主要介绍。

Weaviate云上试用,本地docker安装初步配置使用等。

1.Weaviate云上试用

1.1.注册账号并登录

weaviate提供了云上的免费试用功能Weaviate Cloud,进入网页后注册账号即可免费试用weaviate Cloud
在这里插入图片描述
登录成功后:
在这里插入图片描述

1.2.创建Cluster

  1. 单击Create cluster。
  2. 给集群起个名字。
  3. 设置首选的云区域。
  4. 点击“创建”。

在这里插入图片描述
创建页面:
在这里插入图片描述
创建成功页面:
在这里插入图片描述
在这里插入图片描述

  • REST Endpoint:REST方式连接Weaviate的endpoint.
  • API Kyes:分为管理员API秘钥和只读功能的一个API秘钥

通过REST 端点 URL和API 密钥即可连接到此Weaviate实例。

1.3.连接示例

依赖包的pom依赖[:

<dependency><groupId>io.weaviate</groupId><artifactId>client</artifactId><version>4.7.0</version>  <!-- Check latest version -->
</dependency>

示例代码:

// Set these environment variables
// WEAVIATE_HOSTNAME        Your Weaviate instance hostname
// WEAVIATE_API_KEY         Your Weaviate instance API keypackage your.application;import io.weaviate.client.Config;
import io.weaviate.client.WeaviateClient;
import io.weaviate.client.WeaviateAuthClient;public class App
{public static void main( String[] args ) throws Exception{String scheme = "https";String host = System.getenv("WEAVIATE_HOSTNAME");String apiKey = System.getenv("WEAVIATE_API_KEY");Config config = new Config(scheme, host);WeaviateClient client = WeaviateAuthClient.apiKey(config, apiKey);}
}

更多接口请查看API文档。

2.docker本地安装

docker本地安装可以通过docker命令或者docker-compose来安装,本次我们使用docker-compose来安装。

2.1.基础安装

  1. 安装docker和docker-componse(安装过程不在说明)可参考十分钟学会docker安装 。

  2. 创建docker-compose文件

    ---
    services:weaviate:command:- --host- 0.0.0.0- --port- '8080'- --scheme- httpimage: cr.weaviate.io/semitechnologies/weaviate:1.30.2 # 使用最新稳定版本ports:- 8080:8080- 50051:50051volumes:- weaviate_data:/var/lib/weaviate  # 数据持久化到本地目录restart: on-failure:0environment:QUERY_DEFAULTS_LIMIT: 25AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' # 允许匿名访问PERSISTENCE_DATA_PATH: '/var/lib/weaviate'ENABLE_API_BASED_MODULES: 'true'CLUSTER_HOSTNAME: 'node1'
    volumes:weaviate_data:
    ...
    

    官网也提供了Weaviate的docker-compose.yml文件生成器,可以根据可视化界面选择功能,生成可用的docker-compose文件。
    在这里插入图片描述

  3. 启动Weaviate容器
    在 docker-compose.yml 所在目录执行:

    docker-compose up -d
    

    验证容器是否运行:

    docker ps | grep weaviate
    

    应看到 weaviate 容器状态为 Up。

  4. 检测Weaviate服务
    通过 API 检查服务状态:

    curl http://localhost:8080/v1/meta
    

    返回类似以下 JSON 即表示成功:

    {"hostname":"http://[::]:8080","modules":{"text2vec-openai":{"version":"...","documentationHref":"..."}}}
    

2.2.配置说明

2.2.1.基础配置
  1. 镜像版本

    services:weaviate:image: semitechnologies/weaviate:1.23.7  # 指定版本
    
    • 说明:建议使用官方镜像,选择稳定版(如 1.23.7)或 latest(最新开发版)。
    • 注意:生产环境避免使用 latest,以防版本不兼容。
  2. 端口映射

    ports:- "8080:8080"  # 主机端口:容器端口
    
    • 说明:默认暴露 8080 端口用于 HTTP API 和 GraphQL。
    • 自定义端口:例如 “8090:8080” 避免冲突。
  3. 容器重启策略

    restart: unless-stopped  # 或 always
    
    • 说明:配置容器自动重启策略,提升服务可用性。
2.2.2.环境变量配置
  1. 认证与安全

    environment:AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'  # 允许匿名访问(默认关闭)AUTHENTICATION_APIKEY_ENABLED: 'true'            # 启用 API 密钥认证AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'your-api-key'  # 指定有效 API 密钥
    

    场景:

    • 开发环境可开启匿名访问(‘true’)。

    • 生产环境建议启用 API 密钥或 OIDC 认证。

  2. 模块配置

    ENABLED_MODULES: 'text2vec-openai,img2vec-neural'  # 启用多个模块
    DEFAULT_VECTORIZER_MODULE: 'text2vec-openai'       # 默认向量模型
    

    模块类型:

    • text2vec-openai: 使用 OpenAI 模型生成文本向量。

    • text2vec-huggingface: 本地或远程 Hugging Face 模型。

    • img2vec-neural: 图像向量化(需配置模型服务)。

    依赖配置(示例):

    OPENAI_APIKEY: 'sk-xxx'  # OpenAI API 密钥
    HUGGINGFACE_APIKEY: 'hf-xxx'  # Hugging Face 密钥
    
  3. 数据持久化

    environment:PERSISTENCE_DATA_PATH: '/var/lib/weaviate'  # 容器内数据路径
    volumes:- ./weaviate_data:/var/lib/weaviate  # 挂载到本地目录
    
    • 说明: 默认数据存储在容器内,重启后丢失。通过 volumes 挂载本地目录实现持久化。
  4. 集群配置(多节点部署)

    environment:CLUSTER_HOSTNAME: 'node1'  # 节点唯一名称CLUSTER_GOSSIP_BIND_PORT: '7100'  # 节点间通信端口CLUSTER_JOIN: 'node1:7100,node2:7100'  # 加入集群的其他节点
    
    • 多节点场景: 需为每个节点配置独立的 CLUSTER_HOSTNAME 和端口,并相互声明。
  5. 性能调优

    environment:MAX_IMPORT_GOROUTINES: 4    # 数据导入并发数DEFAULT_VECTORIZER_TIMEOUT: 60  # 向量化超时(秒)GARBAGE_COLLECTION_INTERVAL: 600  # 内存回收间隔(秒)
    
    • 优化建议: 根据硬件资源调整并发数,避免超时或内存溢出。
2.2.3.资源限制
  1. cup/内存限制
    deploy:resources:limits:cpus: '2.0'memory: 8G
    
    • 说明: 防止容器占用过多资源,影响主机其他服务。
  2. GPU支持
    runtime: nvidia  # 需安装 NVIDIA Container Toolkit
    environment:CUDA_VISIBLE_DEVICES: '0'  # 指定使用的 GPU 索引
    
    • 场景: 加速向量化模块(如 text2vec-transformers)。
2.2.4.网络配置
  • 网络配置

    networks:weaviate_net:driver: bridge  # 自定义网络隔离
    services:weaviate:networks:- weaviate_net
    
    • 用途: 创建独立网络,便于与其他服务(如 Elasticsearch、Redis)通信。
2.2.5.日志与监控
  1. 日志级别

    environment:LOG_LEVEL: 'debug'  # 可选: error, warning, info, debug
    
    • 调试: 开发时可设为 debug,生产环境建议 info 或 warning。
  2. Prometheus 监控

    environment:METRICS_ENABLED: 'true'  # 启用监控端点METRICS_PORT: '9090'     # 监控数据暴露端口
    
    • 访问: 通过 http://localhost:9090/metrics 获取指标数据。
2.2.6.健康检测
  • 检测
    healthcheck:test: ["CMD", "curl", "-f", "http://localhost:8080/v1/.well-known/ready"]interval: 30stimeout: 10sretries: 3
    
    • 作用: Docker 自动检测容器健康状态,失败时重启。
2.2.7.高级配置
  1. TLS/SSL 加密
    environment:TLS_CERT: '/path/to/cert.pem'TLS_KEY: '/path/to/key.pem'
    volumes:- ./certs:/certs  # 挂载证书目录
    
    • 说明: 配置 HTTPS 加密通信,需挂载证书文件。
  2. 扩展 API 端点
    environment:EXTENSIONS_STORAGE_MODE: 's3'  # 存储扩展(如 S3)AWS_ACCESS_KEY_ID: 'xxx'AWS_SECRET_ACCESS_KEY: 'xxx'
    
    • 用途: 集成外部存储服务或自定义模块。

2.3.完整示例配置

version: '3.4'
services:weaviate:image: semitechnologies/weaviate:1.23.7ports:- "8080:8080"environment:AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'PERSISTENCE_DATA_PATH: '/var/lib/weaviate'ENABLED_MODULES: 'text2vec-openai'DEFAULT_VECTORIZER_MODULE: 'text2vec-openai'OPENAI_APIKEY: 'sk-xxx'METRICS_ENABLED: 'true'LOG_LEVEL: 'info'volumes:- ./data:/var/lib/weaviatenetworks:- weaviate_netdeploy:resources:limits:memory: 8Ghealthcheck:test: ["CMD", "curl", "-f", "http://localhost:8080/v1/.well-known/ready"]networks:weaviate_net:driver: bridge

2.3.连接示例

依赖包的pom依赖[:

<dependency><groupId>io.weaviate</groupId><artifactId>client</artifactId><version>4.7.0</version>  <!-- Check latest version -->
</dependency>

示例代码:

package your.application;import io.weaviate.client.Config;
import io.weaviate.client.WeaviateClient;public class App {public static void main( String[] args ) throws Exception {String scheme = "http";String host = "localhost:8080";// The Java client doesn't use the gRPC portConfig config = new Config(scheme, host);WeaviateClient client = new WeaviateClient(config);}
}

更多接口请查看API文档。

http://www.xdnf.cn/news/343135.html

相关文章:

  • 【计算机网络】用户从输入网址到网页显示,期间发生了什么?
  • Nginx1.26.2安装包编译安装并配置stream模块
  • V型球阀材质性能深度解析:专攻颗粒、料浆与高腐蚀介质的工业利器-耀圣
  • WEB UI自动化测试之Pytest框架学习
  • RedHat磁盘的添加和扩容
  • 计数排序-详解
  • 从新手到高手:jQuery 全面进阶之路
  • 数字电子技术基础(五十六)——JK触发器
  • crawl4ai能替代scrapy等传统爬虫框架吗?
  • windows 部署 Kafka3.x KRaft 模式 不依赖 ZooKeeper
  • FPGA_Verilog实现QSPI驱动,完成FLASH程序固化
  • 学习黑客 MAC 地址深入了解
  • 解决社区录音应用横屏状态下,录音后无法播放的bug
  • 信息学奥赛一本通 1511:【SCOI2011】糖果 | 洛谷 P3275 [SCOI2011] 糖果
  • ProfiNet与CANopen:新能源时代的“语言翻译官”
  • Kotlin与Java企业级开发实战:从零到一掌握最新语法与技术精髓
  • Office宏病毒钓鱼-打点突破
  • ROS2基本操作1
  • js常用的数组遍历方式
  • HypotMAX7705771077157720HIPOT美国ASSOCIATEDRESEARCH耐压测试仪
  • 1分区 1-113 多线不起总线启
  • 使用pytorch保存和加载预训练的模型方法
  • Spring Boot 中 MongoDB @DBRef注解适用什么场景?
  • 深入理解软件测试覆盖率:从概念到实践
  • SpringBoot的自动配置和起步依赖原理
  • Java 文件监听与热更新机制封装
  • 【LeetCode 42】接雨水(单调栈、DP、双指针)
  • 日拱一卒 | RNA-seq数据质控(1)
  • ERC-20与ERC-721:区块链代币标准的双星解析
  • Spring MVC 中Model, ModelMap, ModelAndView 之间有什么关系和区别?