跳转到主要内容

ColBERT Live! 在支持实时更新的向量索引(无需重建整个索引)之上实现了高效的ColBERT和ColPaLi搜索,同时还可以对其他索引字段应用任意谓词。

项目描述

ColBERT Live!

ColBERT Live! 在支持实时更新的向量索引(无需重建整个索引)之上实现了高效的ColBERT搜索,同时还可以对其他索引字段应用任意谓词。

背景

ColBERT(基于BERT的上下文晚交互)是一种最先进的语义搜索模型,它将基于BERT的语言模型的有效性与实际、大规模搜索应用所需的性能相结合。

与传统密集型段落检索(即每段落一个向量)相比,ColBERT在处理不寻常的术语和短查询方面特别强大。

可以认为ColBERT将语义向量搜索的最好之处与传统的类似BM25的关键字搜索相结合,但无需调整混合搜索的权重或处理向量关键字方面表现不佳的边缘情况。

然而,最初的ColBERT实现是围绕一个自定义索引设计的,该索引不能增量更新,并且难以与其他索引结合。向自定义索引添加、修改或删除文档需要重新索引整个集合,这对于大型数据集来说可能非常缓慢。

ColBERT Live!

ColBERT Live! 在任何向量数据库上实现ColBERT。这意味着您可以在无需重新索引整个集合的情况下添加、修改或从您的搜索系统中删除文档,使其非常适合动态内容环境。这也意味着您可以将数据库中的其他谓词(如访问控制或元数据过滤器)轻松应用于向量搜索。ColBERT Live! 功能

  • 高效的ColBERT搜索实现
  • 支持向量化索引的实时更新
  • 数据库后端抽象层,从AstraDB开始
  • 最先进的ColBERT技术包括
    • Answer.AI ColBERT模型,提高相关性
    • 文档嵌入池,降低存储需求
    • 查询嵌入池,提高搜索性能

安装

您可以使用pip安装ColBERT Live!

pip install colbert-live

用法

  • 子类化您的数据库后端,并实现检索嵌入所需的方法
    from colbert_live.db.astra import AstraCql
    
    class MyDB(AstraCql):
      ...
    
    db = MyDB()
    
  • 实例化 model = colbert_live.models.ColbertModel()model = colbert_live.models.ColpaliModel()
  • 初始化 colbert = ColbertLive(db, model)
  • 调用 colbert.search(query_str, top_k)

提供两份速查表

支持的数据库

ColBERT Live!最初支持开箱即用的DataStax Astra。添加对其他数据库的支持非常简单;查看Astra实现以获取示例。如果您不关心使其可重用,您只需实现基DB类的两个方法

许可证

本项目采用Apache License 2.0许可。有关详细信息,请参阅LICENSE文件。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

colbert_live-0.4.0.tar.gz (18.8 kB 查看哈希值)

上传时间

构建分布

colbert_live-0.4.0-py3-none-any.whl (18.6 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面