[240823] Qdrant 内部结构:不可变的数据结构 | 从“造神”到“造物”:AI公司商业化之路的五大挑战

120 阅读5分钟

Qdrant 内部结构:不可变数据结构

博客介绍了 Qdrant 如何利用不可变数据结构来提升性能,主要包括以下内容:

1. 数据结构概述

  • 理想的数据结构:连续的字节数组,可以单线程顺序读取,充分利用硬件优化。
  • 现实需求:插入、删除、搜索等操作,需要更复杂的数据结构,引入性能权衡。
  • 可变性挑战:更新操作的效率,例如在排序数组中插入元素。

2. 不可变性的优势

  • 预先分配内存:例如,构建排序数组时,可以预先知道元素数量,一次性分配内存。
  • 预先计算统计信息:例如,标量量化需要预先知道数据的分布。
  • 潜在改进:
    功能可变数据结构不可变替代方案潜在改进
    按索引读取数组固定内存块分配确切的内存量
    向量存储数组内存映射文件将数据卸载到磁盘
    读取排序范围B 树排序数组存储所有相邻数据,避免缓存未命中
    按键读取哈希表完美哈希的哈希表避免哈希冲突
    按关键字获取文档倒排索引带排序和位压缩 Posting 的倒排索引更少的内存使用,更快的搜索
    向量搜索HNSW 图负载感知连接的 HNSW 图使用过滤器获得更好的精度
    租户隔离向量存储去碎片化的向量存储更快地访问磁盘上的数据

3. Qdrant 中的不可变数据结构

  • 完美哈希:
    • 解决哈希冲突问题,减少磁盘读取次数。
    • 使用 ph crate 实现,与标准哈希表相比,整体操作时间更短:
      数据量ph::Functionstd::hash::HashHashMap::get
      100060ns~20ns34ns
      100k90ns~20ns220ns
      10M238ns~20ns500ns
    • 构建时间短,内存占用低。
  • 去碎片化:
    • 将相关向量组合到单个页面中,减少磁盘读取次数。
    • 利用负载索引实现。
    • 对于多租户系统特别有效,可以显著提高 RPS:
      热子集百分比租户大小(向量)RPS,未去碎片化RPS,去碎片化
      2.5%50k1.5304
      12.5%50k0.47279
      2.5%5k56490
      12.5%5k5.8488

4. 更新不可变数据结构

  • Qdrant 使用段来存储数据,分为可变段和不可变段。
  • 新数据写入可变段,优化过程将其转换为不可变段。
  • 更新不可变段数据时,使用写时复制机制,将数据移动到可变段进行更新。

5. 缺点和弥补措施

  • 更新成本高。
  • 重建开销。
  • 适用于读密集型工作负载。
  • Qdrant 通过以下方式缓解这些缺点:
    • 允许用户调整段大小。
    • 在极端情况下,多段存储可以充当单个段。

6. 结论

不可变数据结构为读密集型系统提供了显著的性能优势,Qdrant 通过结合完美哈希和去碎片化等技术,进一步提高了向量搜索操作的速度和效率。

来源:
qdrant.tech/articles/im…

从“造神”到“造物”:AI 公司商业化之路的五大挑战

AI 公司正投入巨资发展人工智能,但实际成果却乏善可陈。文章分析了 AI 公司在商业化道路上犯下的错误,以及他们正在如何修正,并探讨了未来 AI 产品成功商业化需要克服的五大挑战。

一、产品市场匹配度:从“造神”到“造物”

  • 早期误区:
    • OpenAI 和 Anthropic 等公司过度关注模型构建,忽视产品开发。
    • Google 和 Microsoft 则急于将AI应用于所有产品,缺乏针对性和实用性。
  • 后果:
    • 早期用户多为“技术尝鲜者”,而非普通用户,导致公众对 AI 的负面认知。
    • AI 功能的过度使用反而降低了用户体验,引发反弹。
  • 转变:
    • OpenAI 等公司开始转型,从研究实验室转向产品公司,更加注重产品开发。
    • Apple 的成功案例表明,缓慢而周到的 AI 整合方式更能获得用户认可。

二、AI消费级产品面临的五大挑战

为了打造出真正吸引用户的 AI 产品,开发者需要解决以下五大局限性:

1. 成本

  • 尽管 AI 模型的成本在不断下降,但成本优化与准确性提升密切相关。
  • 在许多应用场景中,成本的降低意味着可以进行更多次的运算,从而提高准确率。

2. 可靠性

  • AI 模型的准确率难以达到100%,而用户对消费级产品的期望是高度可靠的。
  • 开发者需要改变观念,让 AI 适应用户预期,像传统软件一样工作。
  • 如何构建完全可靠的 AI 系统仍然是一个开放性问题。

3. 隐私

  • AI 助手需要访问用户个人数据才能提供个性化服务,引发了隐私担忧。
  • 公司需要明确数据使用政策,并探索保护用户隐私的技术方案。

4. 安全性

  • AI 模型存在被滥用、攻击和泄露用户数据的风险。
  • 开发者需要加强安全防御措施,并教育用户如何安全使用 AI 产品。

5. 用户界面

  • 用户需要能够在 AI 出错时进行干预,这在自然语言交互界面中尤其重要。
  • 开发者需要设计出既能保证用户体验,又能有效控制 AI 行为的界面。

AI 技术的发展速度很快,但 AI 产品的商业化进程将更加缓慢。开发者需要解决上述挑战,并将 AI 融入现有产品和工作流程中,才能真正实现 AI 的价值。

来源:
www.aisnakeoil.com/p/ai-compan…




更多内容请查阅 : blog-240823


关注微信官方公众号 : oh my x

获取开源软件和 x-cmd 最新用法