项目介绍
VectorFlow是一个开源的、高吞吐量的、容错的向量嵌入流水线。利用简单的API请求,用户可以发送原始数据,进行分块、嵌入,并存储到任何向量数据库中,或者直接返回处理结果。无论数据量有多大,VectorFlow都能快速、可靠地完成处理。
功能与特点
- 高吞吐量与容错性:VectorFlow通过其设计确保数据处理的高效性和稳健性,即使在大量数据流入时也能流畅运行。
- 简单易用的API:使用简单的API端点,用户可以轻松接入,不需要复杂的设置来处理数据。
- 多格式支持:支持多种文本文件格式,包括TXT、PDF、HTML和DOCX,因此在不同场景下都能灵活应用。
- 嵌入和存储兼具:数据不仅可以被分块和转换为向量,还可以被存储到支持的向量数据库中,包括Pinecone、Qdrant和Weaviate。
- 多平台支持:推荐在生产环境中结合Kubernetes使用,以发挥最佳性能。
本地运行VectorFlow
-
克隆项目库:
git clone https://github.com/dgarnitz/vectorflow.git cd vectorflow ./setup.sh
-
安装Python客户端,在Python应用的虚拟环境中使用:
pip install vectorflow-client
使用Docker-Compose部署
Docker-Compose是运行VectorFlow的推荐方式。以下是简要步骤:
-
设置环境变量:在项目根目录创建
env_scripts
文件夹,在其中创建env_vars.env
文件来配置所有需要的环境变量。 -
拉取并启动服务:确保下载RabbitMQ、Postgres、Min.io和使用中的向量数据库的镜像。
docker pull rabbitmq docker pull postgres docker pull qdrant/qdrant | docker pull semitechnologies/weaviate docker pull minio/minio
-
启动Docker-Compose:
docker-compose build --no-cache docker-compose up -d
如何使用VectorFlow
最佳使用方式是结合Python客户端,通过HTTP请求来进行数据的嵌入和处理。
-
单文件嵌入:发送包含文件的POST请求至
/embed
端点,指定文件路径和相关元数据。{ 'SourceData=path_to_txt_file', ... }
-
多文件嵌入:发送多个文件至
/jobs
端点,确保通过流式请求上传文件,成功后将返回上传结果。 -
任务状态查询:可以通过
/jobs/<int:job_id>/status
端点查询任务状态,确保进度透明。
向量数据库元数据标准模式
VectorFlow对上传到向量存储中的数据应用标准化模式,确保数据的可追溯性和去重能力。
分块模式与自定义分块
使用内建的分块器可以按需定义分块策略,用户也可以通过自定义代码实现更特定的分块需求。
S3支持与Webhook
支持AWS S3的预签名URL,用于文件的远程上传和处理,同时提供原始嵌入和分块验证的Webhook功能。
测试与贡献
我们鼓励社区参与到VectorFlow的开发中,通过GitHub议题和PR贡献想法和代码。项目的后续计划包括多文件目录数据导入、重试机制、动态配置数据库模式等。
VectorFlow是一个功能强大的工具,旨在帮助用户更高效地管理和处理海量数据,希望通过持续的更新与完善,使得更多用户能够从中获益。