0

0

如何在 Qdrant 中安全地向现有图像集合追加新数据(而非覆盖重置)

碧海醫心

碧海醫心

发布时间:2026-02-01 11:21:14

|

787人浏览过

|

来源于php中文网

原创

如何在 Qdrant 中安全地向现有图像集合追加新数据(而非覆盖重置)

qdrant 支持对已有集合动态追加向量与元数据,关键在于避免使用 `recreate_collection`(会清空旧数据),而应首次创建时调用 `create_collection`,后续新增图像则直接调用 `upsert` 或 `upload_records`。同时需确保每条记录 id 全局唯一。

在您当前的代码中,问题根源明确:qclient.recreate_collection(...) 每次执行都会强制删除已有同名集合,并新建一个空集合——这正是旧图像丢失的根本原因。Qdrant 的设计哲学是「集合即长期存储单元」,一旦创建完成,就应持续复用,而非反复重建。

✅ 正确做法:分离「建库」与「入库」逻辑

  • 首次初始化集合:仅在系统首次运行或需要重置时调用 create_collection(推荐配合 collection_exists() 判断);
  • 日常新增图像:直接使用 upload_records(批量)或 upsert(单条/小批量),无需重建集合;
  • ID 管理至关重要:所有新记录的 id 必须与历史记录不冲突(建议使用 UUID、时间戳+哈希、或自增全局计数器)。

以下是重构后的核心逻辑示例(仅展示关键修改部分):

快转字幕
快转字幕

新一代 AI 字幕工作站,为创作者提供字幕制作、学习资源、会议记录、字幕制作等场景,一键为您的视频生成精准的字幕。

下载
# ✅ 安全创建集合:仅当不存在时才创建
if not qclient.collection_exists(collection_name=collection_name):
    qclient.create_collection(
        collection_name=collection_name,
        vectors_config=VectorParams(
            size=embedding_length,
            distance=Distance.COSINE
        )
    )
    print(f"✅ Collection '{collection_name}' created.")
else:
    print(f"ℹ️  Collection '{collection_name}' already exists. Skipping creation.")

# ✅ 生成唯一 ID(避免覆盖!)
import uuid
records = [
    models.Record(
        id=str(uuid.uuid4()),  # 强烈推荐:UUID 保证全局唯一性
        payload=payload_dicts[idx],
        vector=embeddings[idx].tolist()  # 注意:Qdrant 接受 list[float],非 torch.Tensor
    )
    for idx in range(len(payload_dicts))
]

# ✅ 追加写入(不会影响已有数据)
qclient.upload_records(
    collection_name=collection_name,
    records=records,
    batch_size=64  # 可选:提升大批量插入性能
)
print(f"✅ Successfully added {len(records)} new images.")

⚠️ 注意事项与最佳实践

  • 向量类型转换:embeddings[idx] 是 PyTorch 张量,Qdrant 要求 list[float],务必调用 .tolist();
  • ID 冲突风险:若沿用 idx 作为 ID(如 id=idx),新批次的索引将从 0 开始,必然覆盖旧数据 —— 这是比 recreate_collection 更隐蔽的丢失原因;
  • 幂等性保障:生产环境建议结合 payload 中的 image_url 字段构建唯一键(如通过 scroll + filter 预查重复),或使用 upsert 配合自定义 points ID 实现精准更新;
  • 性能优化:单次上传超 1000 条记录时,启用 batch_size 参数可显著减少网络往返开销;
  • 错误处理:实际部署中应包裹 try/except 捕获 UnexpectedResponse 或 ResponseHandlingException,并记录失败详情。

总结而言,Qdrant 天然支持增量索引构建——您完全可以在模型迭代、图像库扩容、用户上传等场景中,安全、高效、无损地向现有集合追加任意数量的新图像。只需牢记两个原则:一次建库,多次追加;ID 唯一,绝不覆盖。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

580

2024.04.28

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

103

2025.10.23

C++类型转换方式
C++类型转换方式

本专题整合了C++类型转换相关内容,想了解更多相关内容,请阅读专题下面的文章。

302

2025.07.15

pytorch是干嘛的
pytorch是干嘛的

pytorch是一个基于python的深度学习框架,提供以下主要功能:动态图计算,提供灵活性。强大的张量操作,实现高效处理。自动微分,简化梯度计算。预构建的神经网络模块,简化模型构建。各种优化器,用于性能优化。想了解更多pytorch的相关内容,可以阅读本专题下面的文章。

433

2024.05.29

Python AI机器学习PyTorch教程_Python怎么用PyTorch和TensorFlow做机器学习
Python AI机器学习PyTorch教程_Python怎么用PyTorch和TensorFlow做机器学习

PyTorch 是一种用于构建深度学习模型的功能完备框架,是一种通常用于图像识别和语言处理等应用程序的机器学习。 使用Python 编写,因此对于大多数机器学习开发者而言,学习和使用起来相对简单。 PyTorch 的独特之处在于,它完全支持GPU,并且使用反向模式自动微分技术,因此可以动态修改计算图形。

24

2025.12.22

PHP 高并发与性能优化
PHP 高并发与性能优化

本专题聚焦 PHP 在高并发场景下的性能优化与系统调优,内容涵盖 Nginx 与 PHP-FPM 优化、Opcode 缓存、Redis/Memcached 应用、异步任务队列、数据库优化、代码性能分析与瓶颈排查。通过实战案例(如高并发接口优化、缓存系统设计、秒杀活动实现),帮助学习者掌握 构建高性能PHP后端系统的核心能力。

102

2025.10.16

PHP 数据库操作与性能优化
PHP 数据库操作与性能优化

本专题聚焦于PHP在数据库开发中的核心应用,详细讲解PDO与MySQLi的使用方法、预处理语句、事务控制与安全防注入策略。同时深入分析SQL查询优化、索引设计、慢查询排查等性能提升手段。通过实战案例帮助开发者构建高效、安全、可扩展的PHP数据库应用系统。

90

2025.11.13

JavaScript 性能优化与前端调优
JavaScript 性能优化与前端调优

本专题系统讲解 JavaScript 性能优化的核心技术,涵盖页面加载优化、异步编程、内存管理、事件代理、代码分割、懒加载、浏览器缓存机制等。通过多个实际项目示例,帮助开发者掌握 如何通过前端调优提升网站性能,减少加载时间,提高用户体验与页面响应速度。

30

2025.12.30

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

54

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号