cocoindex-io/cocoindex

GitHub: cocoindex-io/cocoindex

面向 AI 的数据转换框架,用于高效构建增量更新的向量索引和知识图谱。

Stars: 6422 | Forks: 465

CocoIndex

面向 AI 的数据转换

[![GitHub](https://img.shields.io/github/stars/cocoindex-io/cocoindex?color=5B5BD6)](https://github.com/cocoindex-io/cocoindex) [![文档](https://img.shields.io/badge/Documentation-394e79?logo=readthedocs&logoColor=00B9FF)](https://cocoindex.io/docs/getting_started/quickstart) [![许可证](https://img.shields.io/badge/license-Apache%202.0-5B5BD6?logoColor=white)](https://opensource.org/licenses/Apache-2.0) [![PyPI 版本](https://img.shields.io/pypi/v/cocoindex?color=5B5BD6)](https://pypi.org/project/cocoindex/) [![PyPI 下载量](https://static.pepy.tech/badge/cocoindex/month)](https://pepy.tech/projects/cocoindex) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/e1180529b5214155.svg)](https://github.com/cocoindex-io/cocoindex/actions/workflows/CI.yml) [![发布](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/0ef1d462c2214204.svg)](https://github.com/cocoindex-io/cocoindex/actions/workflows/release.yml) [![链接检查](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/5900d9b560214208.svg)](https://github.com/cocoindex-io/cocoindex/actions/workflows/links.yml) [![prek](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/j178/prek/master/docs/assets/badge-v0.json)](https://github.com/j178/prek) [![Discord](https://img.shields.io/discord/1314801574169673738?logo=discord&color=5B5BD6&logoColor=white)](https://discord.com/invite/zpA9S2DR7s)
cocoindex-io%2Fcocoindex | Trendshift
面向 AI 的超高性能数据转换框架,核心引擎采用 Rust 编写。开箱即支持增量处理和数据血缘。卓越的开发效率。首日即可用于生产环境。
[Deutsch](https://readme-i18n.com/cocoindex-io/cocoindex?lang=de) | [English](https://readme-i18n.com/cocoindex-io/cocoindex?lang=en) | [Español](https://readme-i18n.com/cocoindex-io/cocoindex?lang=es) | [français](https://readme-i18n.com/cocoindex-io/cocoindex?lang=fr) | [日本語](https://readme-i18n.com/cocoindex-io/cocoindex?lang=ja) | [한국어](https://readme-i18n.com/cocoindex-io/cocoindex?lang=ko) | [Português](https://readme-i18n.com/cocoindex-io/cocoindex?lang=pt) | [Русский](https://readme-i18n.com/cocoindex-io/cocoindex?lang=ru) | [中文](https://readme-i18n.com/cocoindex-io/cocoindex?lang=zh)

CocoIndex Transformation


CocoIndex 让 AI 数据转换变得轻松自如,并保持源数据与目标数据同步。无论您是构建向量索引、为上下文工程创建知识图谱,还是执行任何自定义数据转换——功能远超 SQL。

CocoIndex Features


## 卓越的效率 只需用约 100 行 Python 代码在数据流中声明转换逻辑 ``` # 导入 data['content'] = flow_builder.add_source(...) # 转换 data['out'] = data['content'] .transform(...) .transform(...) # 收集数据 collector.collect(...) # 导出到 db, vector db, graph db ... collector.export(...) ``` CocoIndex 遵循 [Dataflow](https://en.wikipedia.org/wiki/Dataflow_programming) 编程模型的理念。每次转换仅根据输入字段创建新字段,没有隐藏状态和值变更。每次转换前后的所有数据都是可观测的,并自带数据血缘。 **特别是**,开发人员无需通过创建、更新和删除来显式地变更数据。他们只需为一组源数据定义转换/公式。 ## 即插即用的构建模块 针对不同的源、目标和转换提供原生内置支持。标准化接口,只需一行代码即可在不同组件间切换——就像搭积木一样简单。

CocoIndex Features

## 数据时效性 CocoIndex 轻松保持源数据和目标数据同步。

Incremental Processing

它开箱即支持增量索引: - 源或逻辑变更时最小化重计算。 - (重新)处理必要的部分;尽可能重用缓存 ## 快速开始 如果您是初次接触 CocoIndex,我们建议查看 - 📖 [文档](https://cocoindex.io/docs) - ⚡ [快速入门指南](https://cocoindex.io/docs/getting_started/quickstart) - 🎬 [快速入门视频教程](https://youtu.be/gv5R8nOXsWU?si=9ioeKYkMEnYevTXT) ### 设置 1. 安装 CocoIndex Python 库 ``` pip install -U cocoindex ``` 2. 如果没有 [Postgres](https://cocoindex.io/docs/getting_started/installation#-install-postgres),请先安装。CocoIndex 使用它进行增量处理。 3. (可选)安装 Claude Code 技能以增强开发体验。在 [Claude Code](https://claude.com/claude-code) 中运行以下命令: ``` /plugin marketplace add cocoindex-io/cocoindex-claude /plugin install cocoindex-skills@cocoindex ``` ## 定义数据流 按照 [快速入门指南](https://cocoindex.io/docs/getting_started/quickstart) 定义您的第一个索引流。示例流如下所示: ``` @cocoindex.flow_def(name="TextEmbedding") def text_embedding_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.DataScope): # Add a data source to read files from a directory data_scope["documents"] = flow_builder.add_source(cocoindex.sources.LocalFile(path="markdown_files")) # Add a collector for data to be exported to the vector index doc_embeddings = data_scope.add_collector() # Transform data of each document with data_scope["documents"].row() as doc: # Split the document into chunks, put into `chunks` field doc["chunks"] = doc["content"].transform( cocoindex.functions.SplitRecursively(), language="markdown", chunk_size=2000, chunk_overlap=500) # Transform data of each chunk with doc["chunks"].row() as chunk: # Embed the chunk, put into `embedding` field chunk["embedding"] = chunk["text"].transform( cocoindex.functions.SentenceTransformerEmbed( model="sentence-transformers/all-MiniLM-L6-v2")) # Collect the chunk into the collector. doc_embeddings.collect(filename=doc["filename"], location=chunk["location"], text=chunk["text"], embedding=chunk["embedding"]) # Export collected data to a vector index. doc_embeddings.export( "doc_embeddings", cocoindex.targets.Postgres(), primary_key_fields=["filename", "location"], vector_indexes=[ cocoindex.VectorIndexDef( field_name="embedding", metric=cocoindex.VectorSimilarityMetric.COSINE_SIMILARITY)]) ``` 它定义了一个这样的索引流:

Data Flow

## 🚀 示例和演示 | 示例 | 描述 | |---------|-------------| | [文本嵌入](examples/text_embedding) | 对文本文档进行嵌入索引,用于语义搜索 | | [代码嵌入](examples/code_embedding) | 对代码嵌入进行索引,用于语义搜索 | | [PDF 嵌入](examples/pdf_embedding) | 解析 PDF 并对文本嵌入进行索引,用于语义搜索 | | [PDF 元素嵌入](examples/pdf_elements_embedding) | 从 PDF 中提取文本和图像;使用 SentenceTransformers 嵌入文本,使用 CLIP 嵌入图像;存储在 Qdrant 中用于多模态搜索 | | [手册 LLM 提取](examples/manuals_llm_extraction) | 使用 LLM 从手册中提取结构化信息 | | [Amazon S3 嵌入](examples/amazon_s3_embedding) | 对来自 Amazon S3 的文本文档进行索引 | | [Azure Blob Storage 嵌入](examples/azure_blob_embedding) | 对来自 Azure Blob Storage 的文本文档进行索引 | | [Google Drive 文本嵌入](examples/gdrive_text_embedding) | 对来自 Google Drive 的文本文档进行索引 | | [会议记录转知识图谱](examples/meeting_notes_graph) | 从 Google Drive 提取结构化会议信息并构建知识图谱 | | [文档转知识图谱](examples/docs_to_knowledge_graph) | 从 Markdown 文档中提取关系并构建知识图谱 | | [嵌入到 Qdrant](examples/text_embedding_qdrant) | 将文档索引到 Qdrant 集合中用于语义搜索 | | [嵌入到 LanceDB](examples/text_embedding_lancedb) | 将文档索引到 LanceDB 集合中用于语义搜索 | | [Docker FastAPI 服务器](examples/fastapi_server_docker) | 在 Docker 化的 FastAPI 设置中运行语义搜索服务器 | | [产品推荐](examples/product_recommendation) | 使用 LLM 和图数据库构建实时产品推荐 | | [使用 Vision API 进行图像搜索](examples/image_search) | 使用视觉模型为图像生成详细描述,对其进行嵌入,通过 FastAPI 实现实时更新的语义搜索,并在 React 前端上展示 | | [人脸识别](examples/face_recognition) | 识别图像中的人脸并构建嵌入索引 | | [论文元数据](examples/paper_metadata) | 索引 PDF 文件中的论文,并为每篇论文构建元数据表 | | [多格式索引](examples/multi_format_indexing) | 使用 ColPali 从 PDF 和图像构建视觉文档索引,用于语义搜索 | | [自定义源 HackerNews](examples/custom_source_hn) | 使用 *CocoIndex Custom Source* 索引 HackerNews 帖子和评论 | | [自定义输出文件](examples/custom_output_files) | 将 markdown 文件转换为 HTML 文件并保存到本地目录,使用 *CocoIndex Custom Targets* | | [患者入院表格提取](examples/patient_intake_extraction) | 使用 LLM 从不同格式的患者入院表格中提取结构化数据 | | [HackerNews 热门话题](examples/hn_trending_topics) | 使用 *CocoIndex Custom Source* 和 LLM 从 HackerNews 帖子和评论中提取热门话题 | | [使用 BAML 提取患者入院表格](examples/patient_intake_extraction_baml) | 使用 BAML 从患者入院表格中提取结构化数据 | | [使用 DSPy 提取患者入院表格](examples/patient_intake_extraction_dspy) | 使用 DSPy 从患者入院表格中提取结构化数据 | 更多功能即将推出,敬请期待 👀! ## 📖 文档 有关详细的文档,请访问 [CocoIndex 文档](https://cocoindex.io/docs),其中包括 [快速入门指南](https://cocoindex.io/docs/getting_started/quickstart)。 ## 支持我们 我们正在不断改进,更多功能和示例即将推出。如果您喜欢这个项目,请在 GitHub 仓库 [![GitHub](https://img.shields.io/github/stars/cocoindex-io/cocoindex?color=5B5BD6)](https://github.com/cocoindex-io/cocoindex) 给我们一颗星 ⭐,以保持关注并帮助我们成长。 ## 许可证 CocoIndex 基于 Apache 2.0 许可证授权。
标签:AI基础设施, AI工作流, Apache 2.0, DNS解析, ETL, JavaCC, LLMOps, Python, RAG, 可视化界面, 向量数据库, 增量处理, 开源项目, 数据处理框架, 数据清洗, 数据管道, 数据转换, 无后门, 特征工程, 软件工程, 逆向工具, 通知系统, 非结构化数据, 高性能计算