Project Icon

vector-io

多平台向量数据集迁移工具 支持主流向量数据库

Vector IO是一个向量数据集迁移工具,采用通用格式实现多种向量数据库间的数据转换。目前支持Pinecone、Qdrant、Milvus等主流数据库,提供命令行接口进行数据导入导出和重新嵌入。该开源项目正不断扩展兼容的数据库类型,欢迎社区参与贡献。

向量IO

所有贡献者

PyPI - 版本 PyPI - 下载量 Discord Discord徽章

该库使用向量数据集的通用格式,可以轻松地从所有向量数据库导出和导入数据。

通过在此投票中投票/评论来请求支持某个向量数据库

查看贡献部分,为您喜欢的向量数据库添加支持。

支持的向量数据库

完全支持

向量数据库导入导出
Pinecone
Qdrant
Milvus
GCP Vertex AI 向量搜索
KDB.AI
LanceDB
DataStax Astra DB
Chroma
Turbopuffer

部分支持
向量数据库导入导出

进行中
向量数据库导入导出
Azure AI 搜索
Weaviate
MongoDB Atlas
OpenSearch
Apache Cassandra
txtai
pgvector
SQLite-VSS

不支持
向量数据库导入导出
Vespa
Marqo
Elasticsearch
Redis 搜索
ClickHouse
USearch
Rockset
Epsilla
Activeloop Deep Lake
ApertureDB
CrateDB
Meilisearch
MyScale
Neo4j
Nuclia DB
OramaSearch
Typesense
Anari AI
Vald
Apache Solr

安装

使用pip

pip install vdf-io

从源码安装

git clone https://github.com/AI-Northstar-Tech/vector-io.git
cd vector-io
pip install -r requirements.txt

通用向量数据集格式(VDF)规范

  1. VDF_META.json:这是一个json文件,具有以下在src/vdf_io/meta_types.py中定义的VDFMeta模式:
class NamespaceMeta(BaseModel):
    namespace: str
    index_name: str
    total_vector_count: int
    exported_vector_count: int
    dimensions: int
    model_name: str | None = None
    vector_columns: List[str] = ["vector"]
    data_path: str
    metric: str | None = None
    index_config: Optional[Dict[Any, Any]] = None
    schema_dict: Optional[Dict[str, Any]] = None


class VDFMeta(BaseModel):
    version: str
    file_structure: List[str]
    author: str
    exported_from: str
    indexes: Dict[str, List[NamespaceMeta]]
    exported_at: str
    id_column: Optional[str] = None

  1. 用于元数据和向量的Parquet文件/文件夹。

导出脚本

export_vdf --help
用法: export_vdf [-h] [-m MODEL_NAME]
                  [--max_file_size MAX_FILE_SIZE]
                  [--push_to_hub | --no-push_to_hub]
                  [--public | --no-public]
                  {pinecone,qdrant,kdbai,milvus,vertexai_vectorsearch}
                  ...

将数据从各种向量数据库导出为向量数据集的VDF格式

选项:
  -h, --help            显示此帮助消息并退出
  -m MODEL_NAME, --model_name MODEL_NAME
                        使用的模型名称
  --max_file_size MAX_FILE_SIZE
                        最大文件大小(MB)(默认值:
                        1024)
  --push_to_hub, --no-push_to_hub
                        推送到hub
  --public, --no-public
                        将数据集设为公开(默认值:
                        False)

向量数据库:
  选择要从中导出数据的向量数据库

  {pinecone,qdrant,kdbai,milvus,vertexai_vectorsearch}
    pinecone            从Pinecone导出数据
    qdrant              从Qdrant导出数据
    kdbai               从KDB.AI导出数据
    milvus              从Milvus导出数据
    vertexai_vectorsearch
                        从Vertex AI向量搜索导出数据

导入脚本

import_vdf --help
用法: import_vdf [-h] [-d DIR] [-s | --subset | --no-subset]
                  [--create_new | --no-create_new]
                  {milvus,pinecone,qdrant,vertexai_vectorsearch,kdbai}
                  ...

从VDF导入数据到向量数据库

选项:
  -h, --help            显示此帮助消息并退出
  -d DIR, --dir DIR     要导入的目录
  -s, --subset, --no-subset
                        导入数据子集(默认值:False)
  --create_new, --no-create_new
                        创建新索引(默认值:False)

向量数据库:
  选择要将数据导入的向量数据库

  {milvus,pinecone,qdrant,vertexai_vectorsearch,kdbai}
    milvus              导入数据到Milvus
    pinecone            导入数据到Pinecone
    qdrant              导入数据到Qdrant
    vertexai_vectorsearch
                        导入数据到Vertex AI向量搜索
    kdbai               导入数据到KDB.AI

重新嵌入脚本

这个Python脚本用于重新嵌入向量数据集。它接受VDF格式的向量数据集目录,并使用新模型重新嵌入。该脚本还允许您指定包含要嵌入文本的列名。

reembed_vdf --help
用法: reembed_vdf [-h] -d DIR [-m NEW_MODEL_NAME]
                  [-t TEXT_COLUMN]

重新嵌入向量数据集

选项:
  -h, --help            显示此帮助消息并退出
  -d DIR, --dir DIR     VDF格式的向量数据集目录
  -m NEW_MODEL_NAME, --new_model_name NEW_MODEL_NAME
                        要使用的新模型名称
  -t TEXT_COLUMN, --text_column TEXT_COLUMN
                        包含要嵌入文本的列名

示例

export_vdf -m hkunlp/instructor-xl --push_to_hub pinecone --environment gcp-starter

import_vdf -d /path/to/vdf/dataset milvus

reembed_vdf -d /path/to/vdf/dataset -m sentence-transformers/all-MiniLM-L6-v2 -t title

按照提示选择要导出的索引和ID范围。

贡献

添加新的向量数据库

如果您希望为新的向量数据库添加导入/导出实现,您还必须为同一数据库实现导入/导出的另一面。 请fork仓库并发送包含导入和导出脚本的PR。

添加新向量数据库(ABC)的步骤:

  1. src/vdf_io/names.py的DBNames枚举类中添加您的数据库名称。
  2. 为新数据库创建新文件src/vdf_io/export_vdf/export_abc.pysrc/vdf_io/import_vdf/import_abc.py

导出

  1. 在导出文件中,定义一个名为ExportABC的类,该类继承自ExportVDF。
  2. 为该类指定一个DB_NAME_SLUG。
  3. 该类应实现以下功能:
    1. make_parser()函数,用于向export_vdf命令行界面添加特定于数据库的参数。
    2. export_vdb()函数,用于提示用户输入命令行界面中未提供的信息。然后它应调用get_data()函数。
    3. get_data()函数,以批处理方式从向量数据库的指定索引下载带有所有元数据的点。这些数据应存储在一系列parquet文件/文件夹中。元数据应存储在一个json文件中,其格式符合上述模式。
  4. 使用该脚本从向量数据库的示例索引导出数据,并验证数据是否正确导出。

导入

  1. 在导入文件中,定义一个名为ImportABC的类,该类继承自ImportVDF。
  2. 为该类指定一个DB_NAME_SLUG。
  3. 该类应实现以下功能:
    1. make_parser()函数,用于向import_vdf命令行界面添加特定于数据库的参数,如数据库的URL、任何认证令牌等。
    2. import_vdb()函数,用于提示用户输入命令行界面中未提供的信息。然后它应调用upsert_data()函数。
    3. upsert_data()函数,以批处理方式将vdf数据集中的点及其所有元数据上传到向量数据库的指定索引。关于数据集的所有元数据应从vdf文件夹中的VDF_META.json文件中读取。
  4. 使用该脚本导入上一步导出的示例vdf数据集,并验证数据是否正确导入。

修改VDF规范

如果你希望修改VDF规范,请在发送PR之前开启一个issue进行讨论。

效率改进

如果你希望提高导入/导出脚本的效率,请fork该仓库并发送PR。

遥测

运行仓库中的脚本将向AI Northstar Tech发送匿名使用数据,以帮助改进库。

你可以通过将环境变量DISABLE_TELEMETRY_VECTORIO设置为1来选择退出。

问题

如果你有任何问题,请在仓库中开启一个issue或在LinkedIn上联系Dhruv Anand。

贡献者

(贡献者列表部分保留原文)

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号