venomx
项目描述
venomx - 向量嵌入命名对象模型索引
VENOMX是一个向量嵌入交换标准,建立在现有的向量存储标准之上,旨在共享命名实体的向量嵌入(书籍、基因、出版物、schema.org中的任何东西等)。
其中一个目标是支持一个嵌入中心,可能建立在现有的数据集存储库之上(例如huggingface、zenodo、figshare等)。
为什么?
为什么需要一个嵌入标准?我们有CSV、Parquet和arrow,我们还需要什么?
假设Barb已经使用OpenAI text-embedding-ada-002
为所有维基数据创建了向量嵌入,并将其分发出去(例如在HuggingFace上),Alice从这里下载。
两个月后,Alice想用这个来做RAG查询。但她忘记了使用了什么模型,以及使用了哪个版本的维基数据。她也不记得具体索引了什么。是页面标题?描述?还是完整的维基百科文本?
将这乘以多个数据集、版本、索引策略、子集,混乱随之而来。
venomx的目标是提供
- 一个简单的YAML格式,用于嵌入集的元数据
- 一个超级简单的Parquet模式,用于嵌入本身
它旨在与现有的模型卡和数据集描述标准组合,而不是替代。
它还旨在灵活,支持以下场景
- 与嵌入一起分发嵌入元数据,后者以Parquet等高效格式存储
- 以YAML(以牺牲一些访问时间/空间效率为代价)的形式一起分发
- 使用YAML之外的其他序列化格式进行元数据(JSON、TSV、RDF、Avro、GraphQL等)
- 使用交替存储格式存储嵌入(Arrow、HDF5、...)
- 与您喜欢的数组库轻松组合(numpy、xarr、pyarrow、...)
- 与您喜欢的向量数据库(ChromaDB等)轻松组合
- 与存储在数据库中的对象结合使用,如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的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 844dd995cec070a47f8639943d5e8707fc64787406bd00335163f1b3a5a553b8 |
|
MD5 | 5649a8df0fde246f65a0c4f2cd24100a |
|
BLAKE2b-256 | 35efb92db89f2267157ac3058198fde03bb65312fb904e31aa8ac39d069cbfa4 |
venomx-0.1.1-py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 323a68d57c2e9ce3171f02fa0296264213a1ac02d19b4e446f2452259dc4234e |
|
MD5 | e2b18e5ffc7eee8f126e4e2f3ba65e49 |
|
BLAKE2b-256 | 4a77608ec0ee8c43450e327d3d82d1a1e34fa18862e91d38f5f80027d3d23c34 |