数据分析agent 四:docker qdrant 镜像拉取,和教程

复制代码
# 一 :Qdrant 镜像拉取

### docker pull qdrant/qdrant

### docker load -i E:/笔记2026项目/项目一_问数/1.docker镜像/qdrant.tar

### docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant

### 参数说明:
    docker run -d --name qdrant -p 6333:6333 -p 6334:6334 qdrant/qdrant

    -d:后台运行容器
    
    --name qdrant:指定容器名称
    
    -p 6333:6333:映射 HTTP API 端口
    
    -p 6334:6334:映射 gRPC API 端口

### http://localhost:6333/dashboard


# ==========================================================================

# 二. 数据持久化启动(推荐)
    ⚠️ Windows 特别注意:官方文档提示,在 Windows 上直接挂载本地文件夹可能存在兼容性问题,建议使用 Docker 命名卷(volume) 替代文件夹挂载。
    
    推荐方式:使用 Docker 卷
    
    bash
    docker run -d \
      --name qdrant \
      -p 6333:6333 \
      -p 6334:6334 \
      -v qdrant_data:/qdrant/storage \
      qdrant/qdrant
    这样数据会保存在 Docker 管理的卷中,稳定可靠,不会因 Windows 文件系统兼容性问题导致数据损坏。

### 备选方式:挂载本地文件夹(如遇问题可切换为卷方式)

    bash
    docker run -d \
      --name qdrant \
      -p 6333:6333 \
      -p 6334:6334 \
      -v "$(pwd)/qdrant_storage:/qdrant/storage" \
      qdrant/qdrant
    注意 $(pwd) 在 PowerShell 中有效,CMD 用户需替换为完整路径。

# 三. 生产环境启动(带资源限制和 API 密钥)
    bash
    docker run -d \
      --name qdrant \
      -p 6333:6333 \
      -p 6334:6334 \
      -v qdrant_data:/qdrant/storage \
      -e QDRANT__SERVICE__API_KEY=your_secure_api_key \
      --restart unless-stopped \
      --memory 4g \
      --cpus 2 \
      qdrant/qdrant
    额外参数说明:
    
    -e QDRANT__SERVICE__API_KEY:设置 API 访问密钥,增强安全性
    
    --restart unless-stopped:容器异常退出时自动重启
    
    --memory 和 --cpus:限制资源使用

    # 四、验证部署
    启动成功后,可以通过以下方式验证:
    
    访问 Web UI:浏览器打开 http://localhost:6333/dashboard
    
    查看 API 状态:访问 http://localhost:6333 查看服务信息
    
    查看容器日志:
    
    bash
    docker logs qdrant
    五、容器管理常用命令
    操作  命令
    查看运行状态  docker ps
    停止容器    docker stop qdrant
    启动已存在容器 docker start qdrant
    删除容器    docker rm -f qdrant
    查看日志    docker logs qdrant



# ====================================================================================

Python 连接 Qdrant 验证代码
下面提供一套完整的 Python 代码,用于验证 Qdrant 是否部署成功,并演示基本的向量存储和搜索操作。

# 一、安装 Python 依赖
    bash
    pip install qdrant-client numpy
# 二、基础验证代码(测试连接)
python 复制代码
from qdrant_client import QdrantClient
from qdrant_client.http import models

# 1. 连接 Qdrant(默认本地部署)
client = QdrantClient(host="localhost", port=6333)
try:
    # 获取 collections 列表,能正常返回说明连接成功
    collections = client.get_collections()
    print("✅ Qdrant 连接成功!")
    print(f"📊 当前存在的 Collection 数量: {len(collections.collections)}")
    for col in collections.collections:
        print(f"   - {col.name}")
except Exception as e:
    print(f"❌ 连接失败: {e}")
复制代码
 

# 2. 查看服务健康状态


# 三、完整功能验证(创建 Collection + 插入向量 + 搜索)
python 复制代码
from qdrant_client import QdrantClient
from qdrant_client.http import models
import numpy as np

# 连接 Qdrant
client = QdrantClient(host="localhost", port=6333)

COLLECTION_NAME = "test_demo"

# 1. 删除已存在的同名 Collection(清理测试环境)
if client.collection_exists(COLLECTION_NAME):
    client.delete_collection(COLLECTION_NAME)
    print(f"🗑️ 已删除旧 Collection: {COLLECTION_NAME}")

# 2. 创建 Collection
client.create_collection(
    collection_name=COLLECTION_NAME,
    vectors_config=models.VectorParams(
        size=4,              # 向量维度 = 4
        distance=models.Distance.COSINE  # 相似度度量方式
    )
)
print(f"✅ Collection 创建成功: {COLLECTION_NAME}")

# 3. 准备测试数据(4 维向量 + 对应的 payload 元数据)
points = [
    models.PointStruct(
        id=1,
        vector=[0.1, 0.2, 0.3, 0.4],
        payload={"name": "item_a", "category": "fruit"}
    ),
    models.PointStruct(
        id=2,
        vector=[0.5, 0.6, 0.7, 0.8],
        payload={"name": "item_b", "category": "fruit"}
    ),
    models.PointStruct(
        id=3,
        vector=[0.9, 1.0, 1.1, 1.2],
        payload={"name": "item_c", "category": "vegetable"}
    ),
    models.PointStruct(
        id=4,
        vector=[2.0, 1.8, 1.6, 1.4],
        payload={"name": "item_d", "category": "vegetable"}
    ),
]

# 4. 插入数据
client.upsert(
    collection_name=COLLECTION_NAME,
    points=points
)
print(f"📥 已插入 {len(points)} 条数据")

# 5. 执行向量搜索(新版本 API)
query_vector = [0.15, 0.25, 0.35, 0.45]

# ✅ 修改点:使用 query_points 替代 search
search_result = client.query_points(
    collection_name=COLLECTION_NAME,
    query=query_vector,  # 注意参数名从 query_vector 改为 query
    limit=3,
    with_payload=True
)

print(f"\n🔍 搜索向量: {query_vector}")
print("最相似的结果(按相似度降序):")
# ✅ 修改点:结果在 search_result.points 中
for idx, result in enumerate(search_result.points, 1):
    print(f"  {idx}. ID={result.id}, 相似度={result.score:.4f}")
    print(f"     元数据: {result.payload}")
复制代码
 

## 四、执行结果示例
运行成功后,你会在终端看到类似以下输出:

```text

✅ Qdrant 连接成功!
📊 当前存在的 Collection 数量: 0

🗑️ 已删除旧 Collection: test_demo
✅ Collection 创建成功: test_demo
📥 已插入 4 条数据

🔍 搜索向量: [0.15, 0.25, 0.35, 0.45]
最相似的结果(按相似度降序):
  1. ID=1, 相似度=0.9999
     元数据: {'name': 'item_a', 'category': 'fruit'}
  2. ID=2, 相似度=0.9565
     元数据: {'name': 'item_b', 'category': 'fruit'}
  3. ID=3, 相似度=0.8930
     元数据: {'name': 'item_c', 'category': 'vegetable'}
```
 

# 五、带 API 密钥的连接方式
如果你在启动 Qdrant 时设置了 API_KEY:
python 复制代码
from qdrant_client import QdrantClient

client = QdrantClient(
    host="localhost",
    port=6333,
    api_key="your_secure_api_key"  # 与 docker run 时设置的 API_KEY 一致
)
复制代码
 
# 六、高级验证:指定 Collection 的 JSON 导入/导出
1. 从 JSON 文件导入数据
python 复制代码
import json
from qdrant_client import QdrantClient
from qdrant_client.http import models

client = QdrantClient(host="localhost", port=6333)

with open("vectors.json", "r", encoding="utf-8") as f:
    data = json.load(f)  # 格式: [{"id": 1, "vector": [...], "payload": {...}}]

client.upsert(
    collection_name="your_collection",
    points=[
        models.PointStruct(
            id=item["id"],
            vector=item["vector"],
            payload=item.get("payload", {})
        )
        for item in data
    ]
)
复制代码
 
#### 2. 导出 Collection 全部数据
python 复制代码
scroll_result = client.scroll(
    collection_name="your_collection",
    limit=100,  # 每次最多 100 条
    with_payload=True,
    with_vectors=True
)

for point in scroll_result[0]:
    print(f"ID: {point.id}, Vector: {point.vector}, Payload: {point.payload}")
复制代码
# 七、常见问题
    连接超时或拒绝连接
    
    检查 Qdrant 容器是否正常运行:docker ps | findstr qdrant
    
    检查防火墙是否放行 6333 端口
    
    Collection 创建失败
    
    Qdrant 1.7.0 以下版本不支持某些参数,可尝试升级镜像版本
    
    检查向量维度与实际数据是否一致


# ==================================

# 1. 官方 Web UI (最直接)
# 在你启动 Qdrant 容器后,打开电脑上的浏览器,在地址栏输入以下地址即可访问 Web UI 管理界面:

#  http://localhost:6333/dashboard

    这个界面非常直观,你可以在这里完成很多管理操作:
    
    控制台 (Console):可以直接在网页上调用 Qdrant 的 REST API,非常适合调试和测试。
    
    集合 (Collections):查看、创建和管理你的所有集合,也可以上传快照。
    
    教程 (Tutorial):官方提供了一套交互式教程,可以跟着示例数据上手学习。
    
    监控仪表盘:在 Qdrant Cloud 的集群概览页面,你还可以看到节点、CPU、内存等资源的使用情况可视化图表。
相关推荐
小刘学技术19 小时前
AI人工智能决策树分类器:原理、实现与应用
开发语言·人工智能·python·算法·决策树·机器学习·数据挖掘
电商API_180079052471 天前
跨境货源中台搭建:打通淘宝商品全信息流转,解决批量铺货痛点
数据挖掘·网络爬虫
小森林之主1 天前
Docker Compose 紧急救援:凌晨3点服务器报警的解决方案
docker·微服务·容器化·docker compose·故障排除
你是我的解忧王子1 天前
嵌入式 ADC采样 原始数据分析上层(平均值 波动率 正态分布 线性补偿 系统误差)
fpga开发·数据挖掘·数据分析
临床数据科学和人工智能兴趣组1 天前
R语言因其强大的统计功能、灵活的编程环境、活跃的社区支持和强大的R扩展包,迅速成为统计学和数据科学领域的首选工具之一
开发语言·数据分析·r语言·r语言-4.2.1
杨了个杨89821 天前
Docker Compose 简介及应用
运维·docker·容器
豆瓣鸡1 天前
XXL-JOB 定时任务——从 Docker 部署到分片广播,分布式任务调度落地
spring boot·分布式·docker·定时任务
larance1 天前
机器学习特征预处理之删移除无关特征
人工智能·机器学习·数据挖掘