CocoIndex :打造面向 AI 应用的数据索引平台
用于为 AI 索引数据的 ETL 框架,例如 RAG;具有实时增量更新并支持 LEGO 等自定义逻辑。
简介
CocoIndex 是一个开源的数据索引引擎,旨在为 AI 应用(如语义搜索、检索增强生成(RAG)和基于嵌入的知识图谱)提供高质量的数据准备。它支持自定义转换逻辑和增量更新,确保数据索引的实时性和一致性。 citeturn0search0
主要特性
数据流编程模型:CocoIndex 提供了一个数据驱动的编程模型,用户可以通过声明数据流和转换逻辑来定义索引流程,类似于电子表格中的数据和公式,易于理解和维护。 citeturn0search2
自定义转换逻辑:支持用户插入自定义的分块、嵌入和向量存储等逻辑,满足特定的业务需求。例如,用户可以定义自己的数据分块策略或选择不同的嵌入模型。 citeturn0search0
增量更新:CocoIndex 具备智能的状态管理,能够在源数据或转换逻辑发生变化时,仅重新计算必要的部分,避免全量重建索引,提高效率。 citeturn0search0
Python SDK:CocoIndex 的核心由 Rust 实现,提供了 Python 绑定,兼顾了性能和易用性。用户可以使用熟悉的 Python 语法来构建和管理索引流程。 citeturn0search0
快速开始
安装 CocoIndex Python 库:
pip install cocoindex
设置带有 pgvector 扩展的 Postgres 数据库:
确保已安装 Docker Compose,然后运行以下命令启动一个包含 pgvector 扩展的 Postgres 数据库:
docker compose -f <(curl -L https://raw.githubusercontent.com/cocoindex-io/cocoindex/refs/heads/main/dev/postgres.yaml) up -d
定义索引流程:
使用 CocoIndex 的装饰器和数据流构建器,定义一个文本嵌入的索引流程:
import cocoindex @cocoindex.flow_def(name="TextEmbedding") def text_embedding_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.DataScope): # 添加数据源 data_scope["documents"] = flow_builder.add_source(cocoindex.sources.LocalFile(path="markdown_files")) # 添加收集器 doc_embeddings = data_scope.add_collector() # 对每个文档进行处理 with data_scope["documents"].row() as doc: # 将文档拆分为块 doc["chunks"] = doc["content"].transform( cocoindex.functions.SplitRecursively(language="markdown", chunk_size=300, chunk_overlap=100)) # 对每个块进行处理 with doc["chunks"].row() as chunk: # 对块进行嵌入 chunk["embedding"] = chunk["text"].transform( cocoindex.functions.SentenceTransformerEmbed(model="sentence-transformers/all-MiniLM-L6-v2")) # 收集嵌入和元数据以进行索引 doc_embeddings.collect(filename=doc["filename"], location=chunk["location"], text=chunk["text"], embedding=chunk["embedding"]) # 将收集的数据导出到向量存储 doc_embeddings.export( "doc_embeddings", cocoindex.storages.Postgres(), primary_key_fields=["filename", "location"], vector_index=[("embedding", cocoindex.VectorSimilarityMetric.COSINE_SIMILARITY)])
上述流程定义了从本地文件读取文档,拆分为块,对每个块进行嵌入,并将结果存储到 Postgres 数据库的完整流程。 citeturn0search0
应用场景
CocoIndex 适用于以下 AI 应用场景:
语义搜索:通过构建文本嵌入索引,实现高效的语义搜索功能。
检索增强生成(RAG):为生成式模型提供高质量的检索数据,提升生成结果的准确性和相关性。
知识图谱构建:通过解析和索引结构化数据,构建知识图谱,支持复杂的查询和推理。
社区与贡献
CocoIndex 是一个开源项目,采用 Apache 2.0 许可证。我们欢迎社区的贡献,包括代码改进、文档更新、问题报告和功能请求。您可以通过以下方式参与我们的社区:
GitHub:在我们的 GitHub 仓库中提交问题或拉取请求。
Discord:加入我们的 Discord 社区,与其他开发者交流。
通过 CocoIndex,您可以专注于业务逻辑的开发,而将数据索引的复杂性交给我们处理,快速构建高质量的 AI 应用。
Github:https://github.com/cocoindex-io/cocoindex
油管:https://youtu.be/-UlaGsqW7YI
留言
發佈留言