跳转到主要内容

venomx

项目描述

venomx - 向量嵌入命名对象模型索引

VENOMX是一个向量嵌入交换标准,建立在现有的向量存储标准之上,旨在共享命名实体的向量嵌入(书籍、基因、出版物、schema.org中的任何东西等)。

其中一个目标是支持一个嵌入中心,可能建立在现有的数据集存储库之上(例如huggingface、zenodo、figshare等)。

为什么?

为什么需要一个嵌入标准?我们有CSV、Parquet和arrow,我们还需要什么?

假设Barb已经使用OpenAI text-embedding-ada-002为所有维基数据创建了向量嵌入,并将其分发出去(例如在HuggingFace上),Alice从这里下载。

两个月后,Alice想用这个来做RAG查询。但她忘记了使用了什么模型,以及使用了哪个版本的维基数据。她也不记得具体索引了什么。是页面标题?描述?还是完整的维基百科文本?

将这乘以多个数据集、版本、索引策略、子集,混乱随之而来。

venomx的目标是提供

  • 一个简单的YAML格式,用于嵌入集的元数据
  • 一个超级简单的Parquet模式,用于嵌入本身

它旨在与现有的模型卡和数据集描述标准组合,而不是替代。

它还旨在灵活,支持以下场景

  1. 与嵌入一起分发嵌入元数据,后者以Parquet等高效格式存储
  2. 以YAML(以牺牲一些访问时间/空间效率为代价)的形式一起分发
  3. 使用YAML之外的其他序列化格式进行元数据(JSON、TSV、RDF、Avro、GraphQL等)
  4. 使用交替存储格式存储嵌入(Arrow、HDF5、...)
  5. 与您喜欢的数组库轻松组合(numpy、xarr、pyarrow、...)
  6. 与您喜欢的向量数据库(ChromaDB等)轻松组合
  7. 与存储在数据库中的对象结合使用,如Solr、PostgreSQL、...

请注意,当前功能非常基础,但未来可能会有插件,例如从向量数据库导入/导出。

不包含的范围包括实际上创建嵌入和对其计算。已经存在许多现成的优秀框架。Venomx专注于使嵌入索引公平且易于共享。

示例

此示例基于人类表型本体(HPO)。HPO的向量嵌入对于搜索表型、RAG型LLM应用以及变异优先级应用(向量嵌入的余弦相似度可以替代传统的本体语义相似度度量)很有用。

使用venomx分发的默认方式是包含元数据的YAML文件和一个Parquet文件

$ ls
hp.yaml
hp.parquet

《hp.yaml》的内容

description: HPO label index
prefixes:
  HP: http://purl.obolibrary.org/obo/HP_
model:
  name: "text-embedding-ada-002"
model_input_method:
  description: Simple pass through of labels only
  fields: [ "rdfs:label" ]
dataset:
  name: HPO-Jan-2024
  url: http://purl.obolibrary.org/obo/hp/releases/2024-01-01/hp.owl
objects:
  - id: "HP:0000001"
    label: "All"
  - id: "HP:0000002"
    label: "Abnormality of body height"
  # <snip>

运行parquet schema hp.parquet将给出hp.parquet的架构

{
  "type" : "record",
  "name" : "schema",
  "fields" : [ {
    "name" : "id",
    "type" : [ "null", "int" ],
    "default" : null
  }, {
    "name" : "name",
    "type" : [ "null", "string" ],
    "default" : null
  }, {
    "name" : "embedding",
    "type" : [ "null", {
      "type" : "array",
      "items" : {
        "type" : "record",
        "name" : "list",
        "fields" : [ {
          "name" : "element",
          "type" : [ "null", "float" ],
          "default" : null
        } ]
      }
    } ],
    "default" : null
  }, {
    "name" : "metadata",
    "type" : [ "null", {
      "type" : "map",
      "values" : [ "null", "string" ]
    } ],
    "default" : null
  } ]
}

命令行工具

尽管此存储库的主要目的是作为建议的标准,但我们包括一些简单的工具进行基本转换和验证

转换

目前仅支持两种格式

  • parquet:两个文件,一个元数据yaml文件和一个parquet文件
  • yaml:一个合并的单一yaml文件(可能不太高效)

(这可能会有些令人困惑,可能会改变)

测试文件夹包含一个单一示例,我们可以将其转换为yaml/parquet格式

venomx convert -f yaml tests/input/example.combined.yaml -t parquet -o tests/output/example.yaml

验证

venomx validate tests/output/example.yaml

路线图

  • 使用linkml-arrays标准
  • 其他嵌入格式(xarr、arrow、...)
  • ...

项目详情


下载文件

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

源分发

venomx-0.1.1.tar.gz (11.3 KB 查看散列

上传时间

构建分发

venomx-0.1.1-py3-none-any.whl (11.4 KB 查看散列

上传时间 Python 3

由以下支持

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