[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-cocoindex-io--cocoindex":3,"tool-cocoindex-io--cocoindex":62},[4,18,26,36,46,54],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",160784,2,"2026-04-19T11:32:54",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":42,"last_commit_at":43,"category_tags":44,"status":17},8272,"opencode","anomalyco\u002Fopencode","OpenCode 是一款开源的 AI 编程助手（Coding Agent），旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件，而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码，还是排查难以定位的 Bug，OpenCode 都能通过自然语言交互高效完成，显著减少开发者在重复性劳动和上下文切换上的时间消耗。\n\n这款工具专为软件开发者、工程师及技术研究人员设计，特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构，这意味着用户可以审查代码逻辑、自定义行为策略，甚至私有化部署以保障数据安全，彻底打破了传统闭源 AI 助手的“黑盒”限制。\n\n在技术体验上，OpenCode 提供了灵活的终端界面（Terminal UI）和正在测试中的桌面应用程序，支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具，安装便捷，并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客，还是渴望提升产出的独立开发者，OpenCode 都提供了一个透明、可信",144296,1,"2026-04-16T14:50:03",[13,45],"插件",{"id":47,"name":48,"github_repo":49,"description_zh":50,"stars":51,"difficulty_score":32,"last_commit_at":52,"category_tags":53,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[14,15,13],{"id":55,"name":56,"github_repo":57,"description_zh":58,"stars":59,"difficulty_score":32,"last_commit_at":60,"category_tags":61,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[45,13,15,14],{"id":63,"github_repo":64,"name":65,"description_en":66,"description_zh":67,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":77,"owner_email":78,"owner_twitter":79,"owner_website":80,"owner_url":81,"languages":82,"stars":99,"forks":100,"last_commit_at":101,"license":102,"difficulty_score":32,"env_os":103,"env_gpu":103,"env_ram":103,"env_deps":104,"category_tags":108,"github_topics":109,"view_count":32,"oss_zip_url":77,"oss_zip_packed_at":77,"status":17,"created_at":130,"updated_at":131,"faqs":132,"releases":163},9725,"cocoindex-io\u002Fcocoindex","cocoindex","Data transformation framework for AI. Ultra performant, with incremental processing.  🌟 Star if you like it!","CocoIndex 是一个专为人工智能应用打造的高性能数据转换框架。它旨在解决 AI 开发中复杂的数据处理难题，帮助开发者轻松构建向量索引、知识图谱或执行自定义数据转换，并确保源数据与目标数据实时同步，其能力远超传统 SQL 的局限。\n\n面对数据更新频繁导致重新计算成本高、数据血缘难以追踪等痛点，CocoIndex 提供了开箱即用的增量处理机制。这意味着当源数据发生微小变化时，系统仅处理受影响的部分，极大提升了效率。此外，它还自动管理数据血缘，让数据流转过程清晰可查。\n\n这款工具特别适合需要构建生产级 AI 应用的软件工程师、数据科学家及后端开发人员。其核心引擎采用 Rust 编写，保证了极致的运行性能，同时提供简洁的 Python 接口。用户只需通过约百行代码声明数据流（Dataflow）逻辑，即可快速实现从数据接入、多步转换到导出至数据库或向量库的全流程。CocoIndex 兼顾了卓越的开发速度与生产环境的稳定性，让团队在项目启动初期就能具备交付高质量应用的能力。","\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Fcocoindex.io\u002Fimages\u002Fgithub.svg\" alt=\"CocoIndex\">\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">Data transformation for AI\u003C\u002Fh1>\n\n\u003Cdiv align=\"center\">\n\n[![GitHub](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fcocoindex-io\u002Fcocoindex?color=5B5BD6)](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex)\n[![Documentation](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocumentation-394e79?logo=readthedocs&logoColor=00B9FF)](https:\u002F\u002Fcocoindex.io\u002Fdocs\u002Fgetting_started\u002Fquickstart)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache%202.0-5B5BD6?logoColor=white)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FApache-2.0)\n[![PyPI version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fcocoindex?color=5B5BD6)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fcocoindex\u002F)\n\u003C!--[![PyPI - Downloads](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fcocoindex)](https:\u002F\u002Fpypistats.org\u002Fpackages\u002Fcocoindex) -->\n[![PyPI Downloads](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcocoindex-io_cocoindex_readme_9601d7ba6d83.png)](https:\u002F\u002Fpepy.tech\u002Fprojects\u002Fcocoindex)\n[![CI](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg?event=push&color=5B5BD6)](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Factions\u002Fworkflows\u002FCI.yml)\n[![release](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Factions\u002Fworkflows\u002Frelease.yml\u002Fbadge.svg?event=push&color=5B5BD6)](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Factions\u002Fworkflows\u002Frelease.yml)\n[![Link Check](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Factions\u002Fworkflows\u002Flinks.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Factions\u002Fworkflows\u002Flinks.yml)\n[![prek](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https:\u002F\u002Fraw.githubusercontent.com\u002Fj178\u002Fprek\u002Fmaster\u002Fdocs\u002Fassets\u002Fbadge-v0.json)](https:\u002F\u002Fgithub.com\u002Fj178\u002Fprek)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1314801574169673738?logo=discord&color=5B5BD6&logoColor=white)](https:\u002F\u002Fdiscord.com\u002Finvite\u002FzpA9S2DR7s)\n\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Ftrendshift.io\u002Frepositories\u002F13939\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcocoindex-io_cocoindex_readme_4a68feb902da.png\" alt=\"cocoindex-io%2Fcocoindex | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"\u002F>\u003C\u002Fa>\n\u003C\u002Fdiv>\n\nUltra performant data transformation framework for AI, with core engine written in Rust. Support incremental processing and data lineage out-of-box.  Exceptional developer velocity. Production-ready at day 0.\n\n⭐ Drop a star to help us grow!\n\n\u003Cdiv align=\"center\">\n\n\u003C!-- Keep these links. Translations will automatically update with the README. -->\n[Deutsch](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=de) |\n[English](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=en) |\n[Español](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=es) |\n[français](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=fr) |\n[日本語](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=ja) |\n[한국어](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=ko) |\n[Português](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=pt) |\n[Русский](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=ru) |\n[中文](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=zh)\n\n\u003C\u002Fdiv>\n\n\u003C\u002Fbr>\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Fcocoindex.io\u002Fimages\u002Ftransformation.svg\" alt=\"CocoIndex Transformation\">\n\u003C\u002Fp>\n\n\u003C\u002Fbr>\n\nCocoIndex makes it effortless to transform data with AI, and keep source data and target in sync. Whether you’re building a vector index, creating knowledge graphs for context engineering or performing any custom data transformations — goes beyond SQL.\n\n\u003C\u002Fbr>\n\n\u003Cp align=\"center\">\n\u003Cimg alt=\"CocoIndex Features\" src=\"https:\u002F\u002Fcocoindex.io\u002Fimages\u002Fvenn2.svg\" \u002F>\n\u003C\u002Fp>\n\n\u003C\u002Fbr>\n\n## Exceptional velocity\n\nJust declare transformation in dataflow with ~100 lines of python\n\n```python\n# import\ndata['content'] = flow_builder.add_source(...)\n\n# transform\ndata['out'] = data['content']\n    .transform(...)\n    .transform(...)\n\n# collect data\ncollector.collect(...)\n\n# export to db, vector db, graph db ...\ncollector.export(...)\n```\n\nCocoIndex follows the idea of [Dataflow](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDataflow_programming) programming model. Each transformation creates a new field solely based on input fields, without hidden states and value mutation. All data before\u002Fafter each transformation is observable, with lineage out of the box.\n\n**Particularly**, developers don't explicitly mutate data by creating, updating and deleting. They just need to define transformation\u002Fformula for a set of source data.\n\n## Plug-and-Play Building Blocks\n\nNative builtins for different source, targets and transformations. Standardize interface, make it 1-line code switch between different components - as easy as assembling building blocks.\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Fcocoindex.io\u002Fimages\u002Fcomponents.svg\" alt=\"CocoIndex Features\">\n\u003C\u002Fp>\n\n## Data Freshness\n\nCocoIndex keep source data and target in sync effortlessly.\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcocoindex-io_cocoindex_readme_e9a55bb3143d.png\" alt=\"Incremental Processing\" width=\"700\">\n\u003C\u002Fp>\n\nIt has out-of-box support for incremental indexing:\n\n- minimal recomputation on source or logic change.\n- (re-)processing necessary portions; reuse cache when possible\n\n## Quick Start\n\nIf you're new to CocoIndex, we recommend checking out\n\n- 📖 [Documentation](https:\u002F\u002Fcocoindex.io\u002Fdocs)\n- ⚡  [Quick Start Guide](https:\u002F\u002Fcocoindex.io\u002Fdocs\u002Fgetting_started\u002Fquickstart)\n- 🎬 [Quick Start Video Tutorial](https:\u002F\u002Fyoutu.be\u002Fgv5R8nOXsWU?si=9ioeKYkMEnYevTXT)\n\n### Setup\n\n1. Install CocoIndex Python library\n\n```sh\npip install -U cocoindex\n```\n\n2. [Install Postgres](https:\u002F\u002Fcocoindex.io\u002Fdocs\u002Fgetting_started\u002Finstallation#-install-postgres) if you don't have one. CocoIndex uses it for incremental processing.\n\n3. (Optional) Install Claude Code skill for enhanced development experience. Run these commands in [Claude Code](https:\u002F\u002Fclaude.com\u002Fclaude-code):\n\n```\n\u002Fplugin marketplace add cocoindex-io\u002Fcocoindex-claude\n\u002Fplugin install cocoindex-skills@cocoindex\n```\n\n## Define data flow\n\nFollow [Quick Start Guide](https:\u002F\u002Fcocoindex.io\u002Fdocs\u002Fgetting_started\u002Fquickstart) to define your first indexing flow. An example flow looks like:\n\n```python\n@cocoindex.flow_def(name=\"TextEmbedding\")\ndef text_embedding_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.DataScope):\n    # Add a data source to read files from a directory\n    data_scope[\"documents\"] = flow_builder.add_source(cocoindex.sources.LocalFile(path=\"markdown_files\"))\n\n    # Add a collector for data to be exported to the vector index\n    doc_embeddings = data_scope.add_collector()\n\n    # Transform data of each document\n    with data_scope[\"documents\"].row() as doc:\n        # Split the document into chunks, put into `chunks` field\n        doc[\"chunks\"] = doc[\"content\"].transform(\n            cocoindex.functions.SplitRecursively(),\n            language=\"markdown\", chunk_size=2000, chunk_overlap=500)\n\n        # Transform data of each chunk\n        with doc[\"chunks\"].row() as chunk:\n            # Embed the chunk, put into `embedding` field\n            chunk[\"embedding\"] = chunk[\"text\"].transform(\n                cocoindex.functions.SentenceTransformerEmbed(\n                    model=\"sentence-transformers\u002Fall-MiniLM-L6-v2\"))\n\n            # Collect the chunk into the collector.\n            doc_embeddings.collect(filename=doc[\"filename\"], location=chunk[\"location\"],\n                                   text=chunk[\"text\"], embedding=chunk[\"embedding\"])\n\n    # Export collected data to a vector index.\n    doc_embeddings.export(\n        \"doc_embeddings\",\n        cocoindex.targets.Postgres(),\n        primary_key_fields=[\"filename\", \"location\"],\n        vector_indexes=[\n            cocoindex.VectorIndexDef(\n                field_name=\"embedding\",\n                metric=cocoindex.VectorSimilarityMetric.COSINE_SIMILARITY)])\n```\n\nIt defines an index flow like this:\n\n\u003Cp align=\"center\">\n    \u003Cimg width=\"400\" alt=\"Data Flow\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcocoindex-io_cocoindex_readme_fdc7a8540696.png\" \u002F>\n\u003C\u002Fp>\n\n## 🚀 Examples and demo\n\n| Example | Description |\n|---------|-------------|\n| [Text Embedding](examples\u002Ftext_embedding) | Index text documents with embeddings for semantic search |\n| [Code Embedding](examples\u002Fcode_embedding) | Index code embeddings for semantic search |\n| [PDF Embedding](examples\u002Fpdf_embedding) | Parse PDF and index text embeddings for semantic search |\n| [PDF Elements Embedding](examples\u002Fpdf_elements_embedding) | Extract text and images from PDFs; embed text with SentenceTransformers and images with CLIP; store in Qdrant for multimodal search |\n| [Manuals LLM Extraction](examples\u002Fmanuals_llm_extraction) | Extract structured information from a manual using LLM |\n| [Amazon S3 Embedding](examples\u002Famazon_s3_embedding) | Index text documents from Amazon S3 |\n| [Azure Blob Storage Embedding](examples\u002Fazure_blob_embedding) | Index text documents from Azure Blob Storage |\n| [Google Drive Text Embedding](examples\u002Fgdrive_text_embedding) | Index text documents from Google Drive |\n| [Meeting Notes to Knowledge Graph](examples\u002Fmeeting_notes_graph) | Extract structured meeting info from Google Drive and build a knowledge graph |\n| [Docs to Knowledge Graph](examples\u002Fdocs_to_knowledge_graph) | Extract relationships from Markdown documents and build a knowledge graph |\n| [Embeddings to Qdrant](examples\u002Ftext_embedding_qdrant) | Index documents in a Qdrant collection for semantic search |\n| [Embeddings to LanceDB](examples\u002Ftext_embedding_lancedb) | Index documents in a LanceDB collection for semantic search |\n| [FastAPI Server with Docker](examples\u002Ffastapi_server_docker) | Run the semantic search server in a Dockerized FastAPI setup |\n| [Product Recommendation](examples\u002Fproduct_recommendation) | Build real-time product recommendations with LLM and graph database|\n| [Image Search with Vision API](examples\u002Fimage_search) | Generates detailed captions for images using a vision model, embeds them, enables live-updating semantic search via FastAPI and served on a React frontend|\n| [Face Recognition](examples\u002Fface_recognition) | Recognize faces in images and build embedding index |\n| [Paper Metadata](examples\u002Fpaper_metadata) | Index papers in PDF files, and build metadata tables for each paper |\n| [Multi Format Indexing](examples\u002Fmulti_format_indexing) | Build visual document index from PDFs and images with ColPali for semantic search |\n| [Custom Source HackerNews](examples\u002Fcustom_source_hn) | Index HackerNews threads and comments, using *CocoIndex Custom Source* |\n| [Custom Output Files](examples\u002Fcustom_output_files) | Convert markdown files to HTML files and save them to a local directory, using *CocoIndex Custom Targets* |\n| [Patient intake form extraction](examples\u002Fpatient_intake_extraction) | Use LLM to extract structured data from patient intake forms with different formats |\n| [HackerNews Trending Topics](examples\u002Fhn_trending_topics) | Extract trending topics from HackerNews threads and comments, using *CocoIndex Custom Source* and LLM |\n| [Patient Intake Form Extraction with BAML](examples\u002Fpatient_intake_extraction_baml) | Extract structured data from patient intake forms using BAML |\n| [Patient Intake Form Extraction with DSPy](examples\u002Fpatient_intake_extraction_dspy) | Extract structured data from patient intake forms using DSPy |\n\nMore coming and stay tuned 👀!\n\n## 📖 Documentation\n\nFor detailed documentation, visit [CocoIndex Documentation](https:\u002F\u002Fcocoindex.io\u002Fdocs), including a [Quickstart guide](https:\u002F\u002Fcocoindex.io\u002Fdocs\u002Fgetting_started\u002Fquickstart).\n\n## 🤝 Contributing\n\nWe love contributions from our community ❤️. For details on contributing or running the project for development, check out our [contributing guide](https:\u002F\u002Fcocoindex.io\u002Fdocs\u002Fabout\u002Fcontributing).\n\n## 👥 Community\n\nWelcome with a huge coconut hug 🥥⋆｡˚🤗. We are super excited for community contributions of all kinds - whether it's code improvements, documentation updates, issue reports, feature requests, and discussions in our Discord.\n\nJoin our community here:\n\n- 🌟 [Star us on GitHub](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex)\n- 👋 [Join our Discord community](https:\u002F\u002Fdiscord.com\u002Finvite\u002FzpA9S2DR7s)\n- ▶️ [Subscribe to our YouTube channel](https:\u002F\u002Fwww.youtube.com\u002F@cocoindex-io)\n- 📜 [Read our blog posts](https:\u002F\u002Fcocoindex.io\u002Fblogs\u002F)\n\n## Support us\n\nWe are constantly improving, and more features and examples are coming soon. If you love this project, please drop us a star ⭐ at GitHub repo [![GitHub](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fcocoindex-io\u002Fcocoindex?color=5B5BD6)](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex) to stay tuned and help us grow.\n\n## License\n\nCocoIndex is Apache 2.0 licensed.\n","\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Fcocoindex.io\u002Fimages\u002Fgithub.svg\" alt=\"CocoIndex\">\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">面向AI的数据转换\u003C\u002Fh1>\n\n\u003Cdiv align=\"center\">\n\n[![GitHub](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fcocoindex-io\u002Fcocoindex?color=5B5BD6)](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex)\n[![文档](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocumentation-394e79?logo=readthedocs&logoColor=00B9FF)](https:\u002F\u002Fcocoindex.io\u002Fdocs\u002Fgetting_started\u002Fquickstart)\n[![许可证](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache%202.0-5B5BD6?logoColor=white)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FApache-2.0)\n[![PyPI版本](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fcocoindex?color=5B5BD6)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fcocoindex\u002F)\n\u003C!--[![PyPI - 下载量](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fdm\u002Fcocoindex)](https:\u002F\u002Fpypistats.org\u002Fpackages\u002Fcocoindex) -->\n[![PyPI下载量](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcocoindex-io_cocoindex_readme_9601d7ba6d83.png)](https:\u002F\u002Fpepy.tech\u002Fprojects\u002Fcocoindex)\n[![CI](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Factions\u002Fworkflows\u002FCI.yml\u002Fbadge.svg?event=push&color=5B5BD6)](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Factions\u002Fworkflows\u002FCI.yml)\n[![发布](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Factions\u002Fworkflows\u002Frelease.yml\u002Fbadge.svg?event=push&color=5B5BD6)](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Factions\u002Fworkflows\u002Frelease.yml)\n[![链接检查](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Factions\u002Fworkflows\u002Flinks.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Factions\u002Fworkflows\u002Flinks.yml)\n[![prek](https:\u002F\u002Fimg.shields.io\u002Fendpoint?url=https:\u002F\u002Fraw.githubusercontent.com\u002Fj178\u002Fprek\u002Fmaster\u002Fdocs\u002Fassets\u002Fbadge-v0.json)](https:\u002F\u002Fgithub.com\u002Fj178\u002Fprek)\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1314801574169673738?logo=discord&color=5B5BD6&logoColor=white)](https:\u002F\u002Fdiscord.com\u002Finvite\u002FzpA9S2DR7s)\n\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n    \u003Ca href=\"https:\u002F\u002Ftrendshift.io\u002Frepositories\u002F13939\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcocoindex-io_cocoindex_readme_4a68feb902da.png\" alt=\"cocoindex-io%2Fcocoindex | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"\u002F>\u003C\u002Fa>\n\u003C\u002Fdiv>\n\n专为AI设计的超高效数据转换框架，核心引擎采用Rust编写。开箱即用支持增量处理和数据血缘追踪。开发者效率极高，开箱即产即可投入生产。\n\n⭐ 点个星帮助我们成长吧！\n\n\u003Cdiv align=\"center\">\n\n\u003C!-- 请保留这些链接。翻译会随README自动更新。 -->\n[Deutsch](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=de) |\n[English](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=en) |\n[Español](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=es) |\n[français](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=fr) |\n[日本語](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=ja) |\n[한국어](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=ko) |\n[Português](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=pt) |\n[Русский](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=ru) |\n[中文](https:\u002F\u002Freadme-i18n.com\u002Fcocoindex-io\u002Fcocoindex?lang=zh)\n\n\u003C\u002Fdiv>\n\n\u003C\u002Fbr>\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Fcocoindex.io\u002Fimages\u002Ftransformation.svg\" alt=\"CocoIndex Transformation\">\n\u003C\u002Fp>\n\n\u003C\u002Fbr>\n\nCocoIndex让使用AI进行数据转换变得轻而易举，并能轻松保持源数据与目标数据同步。无论您是在构建向量索引、创建用于上下文工程的知识图谱，还是一切自定义数据转换任务——它远不止SQL那么简单。\n\n\u003C\u002Fbr>\n\n\u003Cp align=\"center\">\n\u003Cimg alt=\"CocoIndex Features\" src=\"https:\u002F\u002Fcocoindex.io\u002Fimages\u002Fvenn2.svg\" \u002F>\n\u003C\u002Fp>\n\n\u003C\u002Fbr>\n\n## 超高的开发效率\n\n只需用约100行Python代码在数据流中声明转换逻辑：\n\n```python\n# 导入\ndata['content'] = flow_builder.add_source(...)\n\n# 转换\ndata['out'] = data['content']\n    .transform(...)\n    .transform(...)\n\n# 收集数据\ncollector.collect(...)\n\n# 导出到数据库、向量数据库、图数据库……\ncollector.export(...)\n```\n\nCocoIndex遵循[数据流](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDataflow_programming)编程模型的理念。每次转换都仅基于输入字段生成新字段，不存在隐藏状态或值的突变。每一步转换前后的数据均可观察，开箱即有数据血缘追踪功能。\n\n**尤其重要的是**，开发者无需显式地通过创建、更新或删除来改变数据，只需为一组源数据定义转换规则或公式即可。\n\n## 即插即用的组件模块\n\n针对不同来源、目标和转换场景，内置了原生组件。接口标准化，只需一行代码即可切换不同组件，就像拼装积木一样简单。\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Fcocoindex.io\u002Fimages\u002Fcomponents.svg\" alt=\"CocoIndex Features\">\n\u003C\u002Fp>\n\n## 数据新鲜度\n\nCocoIndex能够毫不费力地保持源数据与目标数据同步。\n\n\u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcocoindex-io_cocoindex_readme_e9a55bb3143d.png\" alt=\"Incremental Processing\" width=\"700\">\n\u003C\u002Fp>\n\n它开箱即用支持增量索引：\n\n- 源数据或逻辑变更时，仅需最小化重新计算。\n- 只对必要的部分进行（再）处理；尽可能复用缓存。\n\n## 快速入门\n\n如果您是CocoIndex的新用户，建议先查看以下内容：\n\n- 📖 [文档](https:\u002F\u002Fcocoindex.io\u002Fdocs)\n- ⚡  [快速入门指南](https:\u002F\u002Fcocoindex.io\u002Fdocs\u002Fgetting_started\u002Fquickstart)\n- 🎬 [快速入门视频教程](https:\u002F\u002Fyoutu.be\u002Fgv5R8nOXsWU?si=9ioeKYkMEnYevTXT)\n\n### 安装步骤\n\n1. 安装CocoIndex Python库\n\n```sh\npip install -U cocoindex\n```\n\n2. 如果您还没有PostgreSQL，请[安装PostgreSQL](https:\u002F\u002Fcocoindex.io\u002Fdocs\u002Fgetting_started\u002Finstallation#-install-postgres)。CocoIndex利用它来进行增量处理。\n\n3. （可选）安装Claude Code技能以提升开发体验。在[Claude Code](https:\u002F\u002Fclaude.com\u002Fclaude-code)中运行以下命令：\n\n```\n\u002Fplugin marketplace add cocoindex-io\u002Fcocoindex-claude\n\u002Fplugin install cocoindex-skills@cocoindex\n```\n\n## 定义数据流\n\n请按照[快速入门指南](https:\u002F\u002Fcocoindex.io\u002Fdocs\u002Fgetting_started\u002Fquickstart)来定义您的第一个索引流程。一个示例流程如下：\n\n```python\n@cocoindex.flow_def(name=\"TextEmbedding\")\ndef text_embedding_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.DataScope):\n    # 添加一个数据源，从目录中读取文件\n    data_scope[\"documents\"] = flow_builder.add_source(cocoindex.sources.LocalFile(path=\"markdown_files\"))\n\n    # 添加一个收集器，用于将数据导出到向量索引\n    doc_embeddings = data_scope.add_collector()\n\n    # 转换每个文档的数据\n    with data_scope[\"documents\"].row() as doc:\n        # 将文档拆分为多个块，并存储在`chunks`字段中\n        doc[\"chunks\"] = doc[\"content\"].transform(\n            cocoindex.functions.SplitRecursively(),\n            language=\"markdown\", chunk_size=2000, chunk_overlap=500)\n\n        # 转换每个块的数据\n        with doc[\"chunks\"].row() as chunk:\n            # 对该块进行嵌入，并将结果存储在`embedding`字段中\n            chunk[\"embedding\"] = chunk[\"text\"].transform(\n                cocoindex.functions.SentenceTransformerEmbed(\n                    model=\"sentence-transformers\u002Fall-MiniLM-L6-v2\"))\n\n            # 将该块收集到收集器中。\n            doc_embeddings.collect(filename=doc[\"filename\"], location=chunk[\"location\"],\n                                   text=chunk[\"text\"], embedding=chunk[\"embedding\"])\n\n    # 将收集的数据导出到向量索引。\n    doc_embeddings.export(\n        \"doc_embeddings\",\n        cocoindex.targets.Postgres(),\n        primary_key_fields=[\"filename\", \"location\"],\n        vector_indexes=[\n            cocoindex.VectorIndexDef(\n                field_name=\"embedding\",\n                metric=cocoindex.VectorSimilarityMetric.COSINE_SIMILARITY)])\n```\n\n它定义了一个如下的索引流程：\n\n\u003Cp align=\"center\">\n    \u003Cimg width=\"400\" alt=\"Data Flow\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcocoindex-io_cocoindex_readme_fdc7a8540696.png\" \u002F>\n\u003C\u002Fp>\n\n## 🚀 示例与演示\n\n| 示例 | 描述 |\n|---------|-------------|\n| [文本嵌入](examples\u002Ftext_embedding) | 使用嵌入对文本文档进行索引，以支持语义搜索 |\n| [代码嵌入](examples\u002Fcode_embedding) | 使用嵌入对代码进行索引，以支持语义搜索 |\n| [PDF 嵌入](examples\u002Fpdf_embedding) | 解析 PDF 并对文本内容进行嵌入索引，以支持语义搜索 |\n| [PDF 元素嵌入](examples\u002Fpdf_elements_embedding) | 从 PDF 中提取文本和图像；使用 SentenceTransformers 对文本进行嵌入，使用 CLIP 对图像进行嵌入；并将结果存储在 Qdrant 中，以实现多模态搜索 |\n| [手册 LLM 提取](examples\u002Fmanuals_llm_extraction) | 使用 LLM 从手册中提取结构化信息 |\n| [Amazon S3 嵌入](examples\u002Famazon_s3_embedding) | 索引来自 Amazon S3 的文本文档 |\n| [Azure Blob 存储嵌入](examples\u002Fazure_blob_embedding) | 索引来自 Azure Blob 存储的文本文档 |\n| [Google Drive 文本嵌入](examples\u002Fgdrive_text_embedding) | 索引来自 Google Drive 的文本文档 |\n| [会议记录转知识图谱](examples\u002Fmeeting_notes_graph) | 从 Google Drive 中提取结构化的会议信息，并构建知识图谱 |\n| [文档转知识图谱](examples\u002Fdocs_to_knowledge_graph) | 从 Markdown 文档中提取关系，并构建知识图谱 |\n| [嵌入到 Qdrant](examples\u002Ftext_embedding_qdrant) | 将文档索引到 Qdrant 集合中，以支持语义搜索 |\n| [嵌入到 LanceDB](examples\u002Ftext_embedding_lancedb) | 将文档索引到 LanceDB 集合中，以支持语义搜索 |\n| [FastAPI 服务器与 Docker](examples\u002Ffastapi_server_docker) | 在 Docker 化的 FastAPI 设置中运行语义搜索服务器 |\n| [产品推荐](examples\u002Fproduct_recommendation) | 使用 LLM 和图数据库构建实时产品推荐 |\n| [使用视觉 API 进行图像搜索](examples\u002Fimage_search) | 使用视觉模型为图像生成详细描述，并对其进行嵌入；通过 FastAPI 实现实时更新的语义搜索，并在 React 前端上展示 |\n| [人脸识别](examples\u002Fface_recognition) | 识别图像中的人脸并构建嵌入索引 |\n| [论文元数据](examples\u002Fpaper_metadata) | 对 PDF 文件中的论文进行索引，并为每篇论文构建元数据表 |\n| [多格式索引](examples\u002Fmulti_format_indexing) | 使用 ColPali 从 PDF 和图像中构建视觉文档索引，以支持语义搜索 |\n| [自定义源 HackerNews](examples\u002Fcustom_source_hn) | 使用 *CocoIndex 自定义源* 对 HackerNews 的帖子和评论进行索引 |\n| [自定义输出文件](examples\u002Fcustom_output_files) | 使用 *CocoIndex 自定义目标* 将 Markdown 文件转换为 HTML 文件并保存到本地目录 |\n| [患者入院表单提取](examples\u002Fpatient_intake_extraction) | 使用 LLM 从不同格式的患者入院表单中提取结构化数据 |\n| [HackerNews 热门话题](examples\u002Fhn_trending_topics) | 使用 *CocoIndex 自定义源* 和 LLM 从 HackerNews 的帖子和评论中提取热门话题 |\n| [使用 BAML 提取患者入院表单](examples\u002Fpatient_intake_extraction_baml) | 使用 BAML 从患者入院表单中提取结构化数据 |\n| [使用 DSPy 提取患者入院表单](examples\u002Fpatient_intake_extraction_dspy) | 使用 DSPy 从患者入院表单中提取结构化数据 |\n\n更多内容即将推出，敬请期待 👀！\n\n## 📖 文档\n\n有关详细文档，请访问 [CocoIndex 文档](https:\u002F\u002Fcocoindex.io\u002Fdocs)，其中包括[快速入门指南](https:\u002F\u002Fcocoindex.io\u002Fdocs\u002Fgetting_started\u002Fquickstart)。\n\n## 🤝 贡献\n\n我们非常欢迎社区的贡献 ❤️。有关如何参与贡献或在开发环境中运行该项目的详细信息，请参阅我们的[贡献指南](https:\u002F\u002Fcocoindex.io\u002Fdocs\u002Fabout\u002Fcontributing)。\n\n## 👥 社区\n\n热烈欢迎您加入！我们非常期待来自社区的各种贡献——无论是代码改进、文档更新、问题报告、功能请求，还是在 Discord 上的讨论。\n\n在这里加入我们的社区：\n\n- 🌟 [在 GitHub 上关注我们](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex)\n- 👋 [加入我们的 Discord 社区](https:\u002F\u002Fdiscord.com\u002Finvite\u002FzpA9S2DR7s)\n- ▶️ [订阅我们的 YouTube 频道](https:\u002F\u002Fwww.youtube.com\u002F@cocoindex-io)\n- 📜 [阅读我们的博客文章](https:\u002F\u002Fcocoindex.io\u002Fblogs\u002F)\n\n## 支持我们\n\n我们一直在不断改进，更多的功能和示例即将推出。如果您喜欢这个项目，请在 GitHub 仓库中给我们点个赞 ⭐ [![GitHub](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fcocoindex-io\u002Fcocoindex?color=5B5BD6)](https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex)，以便及时了解最新动态并帮助我们成长。\n\n## 许可证\n\nCocoIndex 采用 Apache 2.0 许可证。","# CocoIndex 快速上手指南\n\nCocoIndex 是一个专为 AI 打造的高性能数据转换框架，核心引擎由 Rust 编写。它支持增量处理和完整的数据血缘追踪，能够帮助开发者轻松构建向量索引、知识图谱或执行自定义数据转换，并保持源数据与目标数据的实时同步。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**：Linux, macOS 或 Windows (WSL 推荐)\n*   **Python 版本**：Python 3.8 或更高版本\n*   **数据库依赖**：**PostgreSQL**。CocoIndex 依赖 Postgres 进行状态管理和增量处理。如果您尚未安装，请参考 [PostgreSQL 官方安装指南](https:\u002F\u002Fwww.postgresql.org\u002Fdownload\u002F) 或使用 Docker 快速启动：\n    ```bash\n    docker run --name cocoindex-postgres -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres\n    ```\n*   **网络连接**：首次运行时需下载模型或连接外部 API（如 HuggingFace），请确保网络通畅。\n\n## 安装步骤\n\n### 1. 安装 Python 库\n使用 pip 安装最新版本的 CocoIndex：\n\n```sh\npip install -U cocoindex\n```\n\n> **提示**：国内用户若遇到下载缓慢，可指定清华或阿里镜像源：\n> `pip install -U cocoindex -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`\n\n### 2. (可选) 增强开发体验\n如果您使用 **Claude Code**，可以安装官方插件以获得更好的代码辅助：\n\n```bash\n\u002Fplugin marketplace add cocoindex-io\u002Fcocoindex-claude\n\u002Fplugin install cocoindex-skills@cocoindex\n```\n\n## 基本使用\n\nCocoIndex 采用 **Dataflow（数据流）** 编程模型。您只需声明数据来源、转换逻辑和目标出口，无需手动管理数据的增删改查，框架会自动处理增量更新。\n\n以下是一个最简单的示例：读取本地 Markdown 文件，将其分块并生成嵌入向量（Embedding），最后存入 Postgres 向量索引。\n\n### 代码示例 (`quickstart.py`)\n\n```python\nimport cocoindex\n\n@cocoindex.flow_def(name=\"TextEmbedding\")\ndef text_embedding_flow(flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.DataScope):\n    # 1. 添加数据源：读取本地目录下的 markdown 文件\n    data_scope[\"documents\"] = flow_builder.add_source(\n        cocoindex.sources.LocalFile(path=\"markdown_files\")\n    )\n\n    # 2. 添加收集器：用于收集处理后要导出的数据\n    doc_embeddings = data_scope.add_collector()\n\n    # 3. 定义转换逻辑\n    with data_scope[\"documents\"].row() as doc:\n        # 将文档递归分割成块 (chunks)\n        doc[\"chunks\"] = doc[\"content\"].transform(\n            cocoindex.functions.SplitRecursively(),\n            language=\"markdown\", \n            chunk_size=2000, \n            chunk_overlap=500\n        )\n\n        # 对每个文本块进行向量化处理\n        with doc[\"chunks\"].row() as chunk:\n            chunk[\"embedding\"] = chunk[\"text\"].transform(\n                cocoindex.functions.SentenceTransformerEmbed(\n                    model=\"sentence-transformers\u002Fall-MiniLM-L6-v2\"\n                )\n            )\n\n            # 收集结果字段\n            doc_embeddings.collect(\n                filename=doc[\"filename\"], \n                location=chunk[\"location\"],\n                text=chunk[\"text\"], \n                embedding=chunk[\"embedding\"]\n            )\n\n    # 4. 导出到目标数据库 (Postgres) 并建立向量索引\n    doc_embeddings.export(\n        \"doc_embeddings\",\n        cocoindex.targets.Postgres(), # 需配置环境变量 DATABASE_URL 指向您的 Postgres\n        primary_key_fields=[\"filename\", \"location\"],\n        vector_indexes=[\n            cocoindex.VectorIndexDef(\n                field_name=\"embedding\",\n                metric=cocoindex.VectorSimilarityMetric.COSINE_SIMILARITY\n            )\n        ]\n    )\n\nif __name__ == \"__main__\":\n    # 启动数据流服务\n    cocoindex.default_server().serve()\n```\n\n### 运行流程\n\n1.  创建一个名为 `markdown_files` 的文件夹，并放入一些 `.md` 测试文件。\n2.  设置数据库连接环境变量（假设使用本地默认 Postgres）：\n    ```bash\n    export DATABASE_URL=\"postgresql:\u002F\u002Fpostgres:postgres@localhost:5432\u002Fpostgres\"\n    ```\n3.  运行脚本：\n    ```bash\n    python quickstart.py\n    ```\n\n启动后，CocoIndex 会自动执行全量索引，并监听文件变化。当您在 `markdown_files` 目录中新增或修改文件时，系统将仅重新计算受影响的部分（增量更新），保持数据实时同步。\n\n---\n*更多高级用法（如连接 S3、构建知识图谱、自定义源\u002F目标等），请参阅 [官方文档](https:\u002F\u002Fcocoindex.io\u002Fdocs)。*","某电商团队需要构建一个实时更新的智能客服知识库，将每日新增的商品评论、售后工单等非结构化数据转化为向量索引和知识图谱，以支持精准的语义检索。\n\n### 没有 cocoindex 时\n- **数据同步滞后**：传统批处理任务只能按天更新，导致客服机器人无法回答关于几小时前刚发生的突发质量问题的咨询。\n- **开发维护复杂**：工程师需手动编写复杂的 SQL 和 Python 脚本来协调数据清洗、嵌入生成及入库流程，代码量庞大且难以调试。\n- **资源浪费严重**：即使源数据仅微调几个字，系统也往往被迫重新处理整张表，计算成本和延迟极高。\n- **血缘追踪困难**：当检索结果出现偏差时，难以快速定位是原始数据污染还是中间转换逻辑出错，排查问题耗时耗力。\n\n### 使用 cocoindex 后\n- **毫秒级增量同步**：利用内置的增量处理能力，源数据一旦变更，向量索引和图谱节点即刻自动更新，确保客服回答始终基于最新信息。\n- **声明式极简开发**：仅需约 100 行 Python 代码即可通过数据流模型清晰定义从源端到向量库的完整转换逻辑，大幅降低开发门槛。\n- **高性能按需计算**：核心引擎基于 Rust 构建，仅对变动数据进行精确的增量转换，显著节省算力并消除不必要的等待时间。\n- **原生数据血缘**：系统自动记录数据流转路径，开发人员可一键追溯任意检索结果的来源与转换历史，快速定位并修复数据异常。\n\ncocoindex 通过声明式数据流和原生增量处理，让企业能够以极低的开发成本构建实时、可靠且可追溯的 AI 数据基础设施。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fcocoindex-io_cocoindex_bf583dc3.png","cocoindex-io","CocoIndex","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fcocoindex-io_e9d10946.png","Real-time data transformation framework for AI",null,"hi@cocoindex.io","cocoindex_io","https:\u002F\u002Fcocoindex.io","https:\u002F\u002Fgithub.com\u002Fcocoindex-io",[83,87,91,95],{"name":84,"color":85,"percentage":86},"Rust","#dea584",68.1,{"name":88,"color":89,"percentage":90},"Python","#3572A5",31.5,{"name":92,"color":93,"percentage":94},"Shell","#89e051",0.2,{"name":96,"color":97,"percentage":98},"Handlebars","#f7931e",0.1,6904,499,"2026-04-19T06:14:34","Apache-2.0","未说明",{"notes":105,"python":103,"dependencies":106},"核心引擎由 Rust 编写。必须安装 PostgreSQL 数据库以支持增量处理功能。可通过 PyPI 安装 Python 库（pip install -U cocoindex）。支持多种数据源（本地文件、S3、Azure、Google Drive 等）和目标存储（Postgres、Qdrant、LanceDB 等）。",[65,107],"Postgres",[15,14,16,35,13],[110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129],"ai","change-data-capture","data","data-indexing","etl","indexing","python","rag","real-time","rust","semantic-search","data-engineering","data-processing","help-wanted","knowledge-graph","llm","context-engineering","agentic-data-framework","long-horizon-agent","ai-agents","2026-03-27T02:49:30.150509","2026-04-20T04:05:12.988212",[133,138,143,148,153,158],{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},43671,"Python SDK 中的类型注解（type annotation）是如何处理的？","CocoIndex V1 将原生支持 Python 本地类型（如 `int`, `dict[str, Any]` 等）。在内部实现上，SDK 会将 Python 原生类型注解转换为结构化的 `AnalyzedTypeInfo`，再映射到 CocoIndex 引擎的强类型 Schema 表示。用户可以直接在代码中使用标准的 Python 类型提示，无需手动转换。","https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fissues\u002F1083",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},43668,"遇到 'AttributeError: module 'cocoindex._engine' has no attribute...' 错误怎么办？","这通常是由于 Python 代码与 Rust 核心之间的版本不一致导致的（例如升级时 `_engine.pyd` 文件未更新）。解决方法是执行干净的重新安装：先完全卸载 cocoindex，然后重新安装最新版本（如 0.3.10 或更高），新版本会提供更详细的诊断信息以确认是否为版本不匹配问题。","https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fissues\u002F1298",{"id":144,"question_zh":145,"answer_zh":146,"source_url":147},43669,"如何在亮色背景的终端中解决 'cocoindex setup' 标题颜色显示不清的问题？","可以通过移除描述文本的硬编码颜色来解决，让终端自动使用前景色。这样能确保无论使用何种主题（亮色或暗色），文本都清晰可见。维护者已确认该方案在不同主题下测试效果良好。","https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fissues\u002F369",{"id":149,"question_zh":150,"answer_zh":151,"source_url":152},43670,"CocoIndex 是否支持瞬态流（transient flows，即一次性任务）？","在当前的 v0.x 版本中，瞬态流功能正在开发中。但在即将发布的 CocoIndex V1 版本中，将原生支持 Python 类型，并且“瞬态流”将成为开箱即用的功能，无需额外配置即可实现“发射后不管”的一次性数据处理任务。","https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fissues\u002F998",{"id":154,"question_zh":155,"answer_zh":156,"source_url":157},43672,"如何为 CLI 添加进度条以显示数据源更新状态？","可以通过读取源更新统计信息（source update stats）中的“已处理行数”和“总行数”来构建进度条。社区贡献者已实现了基于单色主题的进度条功能，能够直观展示数据处理进度。该功能已被合并到核心代码中。","https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fissues\u002F343",{"id":159,"question_zh":160,"answer_zh":161,"source_url":162},43673,"如何配置 Docusaurus 文档以在链接失效时报错？","可以在 `docs\u002Fdocusaurus.config.ts` 配置文件中设置 `brokenAnchor` 选项为报错模式。这样在构建文档时，如果发现锚点链接失效，系统会直接报告错误而不是忽略，有助于维护文档链接的完整性。相关修复已通过 PR #1325 合并。","https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fissues\u002F1117",[164,169,174,179,184,189,194,199,204,209,214,219,224,229,234,239,244,249,254,259],{"id":165,"version":166,"summary_zh":167,"released_at":168},345325,"v1.0.0-alpha46","## 变更内容\n* 重构：将 NotMemoizable 重命名为 NotMemoKeyable，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1833 中完成\n* 功能（fn）：为 @coco.fn 添加 deps= 参数，用于外部逻辑依赖，由 @zherendong 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1836 中完成\n* 功能：添加基于大模型的实体解析工具及配对解析器，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1837 中完成\n\n## 新贡献者\n* @zherendong 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1836 中完成了首次贡献\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha45...v1.0.0-alpha46","2026-04-17T01:31:42",{"id":170,"version":171,"summary_zh":172,"released_at":173},345326,"v1.0.0-alpha45","## 变更内容\n* 重构：将上下文键 `tracked` 重命名为 `detect_change`，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1823 中完成\n* 重构：将 `memo_key` 重命名为 `memo_fingerprint`，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1824 中完成\n* 重构：将 `detect_change` 的默认值设为 `False`，并重构文档，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1825 中完成\n* 功能性改进：使 `mount()` 和 `use_mount()` 中的 `ComponentSubpath` 可选，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1826 中完成\n* 功能性改进：为 CLI 命令实现优雅的 Ctrl+C 关闭功能，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1827 中完成\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha44...v1.0.0-alpha45","2026-04-15T04:22:41",{"id":175,"version":176,"summary_zh":177,"released_at":178},345327,"v1.0.0-alpha44","## 变更内容\n* 功能(cli)：在 show 命令中支持 --db 和 --app-name 选项，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1820 中实现\n* 修复(progress)：修复 macOS 系统下退出时 PTY 读取器卡死的问题，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1821 中修复\n* 修复(progress)：使已用时间计时器独立于统计信息变化而刷新，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1822 中修复\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha43...v1.0.0-alpha44","2026-04-11T06:08:30",{"id":180,"version":181,"summary_zh":182,"released_at":183},345328,"v1.0.0-alpha43","## 变更内容\n* 功能：由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1818 中添加 CocoIndex Claude Code 技能\n* 修复（lmdb）：在 MDB_READERS_FULL 错误时，使用退避策略重试读事务，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1819 中实现\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha42...v1.0.0-alpha43","2026-04-09T19:26:10",{"id":185,"version":186,"summary_zh":187,"released_at":188},345329,"v1.0.0-alpha42","## 变更内容\n* 重构：通过 Weak\u002FDrop 实现 active_children 的垃圾回收、统计信息就绪状态，以及实时传播，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1802 中完成。\n* 功能：重新设计进度报告，采用基于 PTY 的显示方式，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1804 中完成。\n* 修复：在实时模式下，抑制 Ctrl+C 时出现的大量 CancelledError 日志，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1805 中完成。\n* 功能：为 managed_by 参数添加 ManagedBy StrEnum 枚举类型，由 @batmany13 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1807 中完成。\n* 修复：清理实时组件增量删除后遗留的垃圾回收墓碑，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1808 中完成。\n* 功能：新增 Kafka 源连接器，并将 LiveMapFeed\u002FLiveMapView 协议拆分，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1809 中完成。\n* 修复：避免 Kafka 源连接器中约 60 秒的关闭延迟，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1810 中完成。\n* 杂项：在 .gitignore 中忽略 .claude\u002Fhooks 隐藏文件，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1811 中完成。\n* 杂项（示例）：调整 csv_to_kafka 的默认配置，并跳过空键值，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1812 中完成。\n* 文档：澄清实时模式与默认增量更新的区别，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1813 中完成。\n* 修复（Kafka）：在目标生产者中等待消息传递的 Future 完成，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1814 中完成。\n* 文档：将“非实时”重命名为“追补模式”，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1815 中完成。\n* 文档：记录 ContextKey 作为源和目标的稳定标识符，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1816 中完成。\n* 功能（memo）：在跟踪的上下文值上尊重 __coco_memo_state__，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1817 中完成。\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha41...v1.0.0-alpha42","2026-04-09T15:02:54",{"id":190,"version":191,"summary_zh":192,"released_at":193},345330,"v1.0.0-alpha41","## 变更内容\n* 文档：修复过时的 TargetHandler 协议，并由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1800 中添加 ContextKey 使用指南\n* 功能：新增 Kafka 目标连接器，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1801 中实现\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha40...v1.0.0-alpha41","2026-04-04T04:00:18",{"id":195,"version":196,"summary_zh":197,"released_at":198},345331,"v1.0.0-alpha40","## 变更内容\n* 更新 README.md，由 @badmonster0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1794 中完成\n* 新增功能：支持 LiveComponent，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1795 中完成\n* 修复：在绑定的类方法上尊重 @coco.fn(memo=True) 装饰器，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1796 中完成\n* 修复：解决所有权转移测试不稳定的问题，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1797 中完成\n* 新增功能：为 mount_each 和 localfs 实时监听提供 LiveItemsView 辅助工具，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1799 中完成\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha39...v1.0.0-alpha40","2026-04-03T06:29:04",{"id":200,"version":201,"summary_zh":202,"released_at":203},345332,"v0.3.37","## 变更内容\n* ci(deps): 由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1770 中将 webfactory\u002Fssh-agent 从 0.9.1 升级至 0.10.0\n* ci(deps): 由 @dependabot[bot] 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1769 中将 j178\u002Fprek-action 从 1 升级至 2\n* docs: 由 @cdnsteve 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1772 中添加了 Docker + pgvector 的部署教程\n* feat: 由 @Alex-wuhu 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1781 中新增 Novita AI 作为 LLM 提供商\n* feat(targets): 由 @costajohnt 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1647 中新增 Turbopuffer 目标连接器\n\n## 新贡献者\n* @cdnsteve 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1772 中完成了首次贡献\n* @Alex-wuhu 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1781 中完成了首次贡献\n* @costajohnt 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1647 中完成了首次贡献\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv0.3.36...v0.3.37","2026-04-01T02:38:54",{"id":205,"version":206,"summary_zh":207,"released_at":208},345333,"v1.0.0-alpha39","## 变更内容\n* 功能：由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1786 中实现，改用 msgspec 和 pydantic 进行反序列化，取代 pickle。\n* 功能：由 @shannon06437 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1754 中实现，添加异常处理器挂载功能。\n* 功能：由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1787 中实现，支持组件间目标状态的所有权转移。\n* 修订：由 @badmonster0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1792 中完成，针对播客到知识图谱的 README 文档进行修订。\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha38...v1.0.0-alpha39","2026-04-01T19:19:22",{"id":210,"version":211,"summary_zh":212,"released_at":213},345334,"v1.0.0-alpha38","## 变更内容\n* 功能：批量函数支持额外参数，由 @Davda-James 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1766 中实现\n* 测试（上下文）：为 __coco_memo_state__() 内部的 use_context() 添加测试，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1782 中完成\n* 重构：将 prev_possible_states 重命名为 prev_possible_records，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1783 中完成\n* 杂项（依赖）：将 litellm 锁定至 >=1.81.0,\u003C=1.82.6 版本，由 @georgeh0 在 https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1785 中完成\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha37...v1.0.0-alpha38","2026-03-24T21:44:02",{"id":215,"version":216,"summary_zh":217,"released_at":218},345335,"v1.0.0-alpha37","## What's Changed\r\n* chore: add field annotations to the `conversation_to_knowledge` example by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1776\r\n* fix(ctx-plubming): plubming component ctx for state functions by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1777\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha36...v1.0.0-alpha37","2026-03-21T03:50:02",{"id":220,"version":221,"summary_zh":222,"released_at":223},345336,"v1.0.0-alpha36","## What's Changed\r\n* example(conversation-to-knowledge): polish and optimize surrealdb target by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1775\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha35...v1.0.0-alpha36","2026-03-19T06:59:59",{"id":225,"version":226,"summary_zh":227,"released_at":228},345337,"v1.0.0-alpha35","## What's Changed\r\n* example(conversation-to-knowledge): polish and minor fixes by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1774\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha34...v1.0.0-alpha35","2026-03-19T00:53:22",{"id":230,"version":231,"summary_zh":232,"released_at":233},345338,"v1.0.0-alpha34","## What's Changed\r\n* Fix: flaky cli tests by @shannon06437 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1747\r\n* example(conversation-to-knowledge): initial version by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1773\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha33...v1.0.0-alpha34","2026-03-18T22:36:24",{"id":235,"version":236,"summary_zh":237,"released_at":238},345339,"v1.0.0-alpha33","## What's Changed\r\n* chore: rename `by_processor` to `by_component` in `UpdateStats`. by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1768\r\n* fix: use char offset for chunk slicing by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1771\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha32...v1.0.0-alpha33","2026-03-17T06:07:49",{"id":240,"version":241,"summary_zh":242,"released_at":243},345340,"v1.0.0-alpha32","## What's Changed\r\n* feat: expose a progress watching API for `App` by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1767\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha31...v1.0.0-alpha32","2026-03-15T17:44:55",{"id":245,"version":246,"summary_zh":247,"released_at":248},345341,"v1.0.0-alpha31","## What's Changed\r\n* chore: upgrade examples deps to cocoindex-1.0.0a30 by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1762\r\n* docs: update docs for `ContextKey` based connections by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1763\r\n* fix: make `async_adapters` carry over context vars by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1764\r\n* chore: assorted fix and improvements by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1765\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha30...v1.0.0-alpha31","2026-03-14T21:38:49",{"id":250,"version":251,"summary_zh":252,"released_at":253},345342,"v1.0.0-alpha30","## What's Changed\r\n* feat: provide a mechanism for safe unpickle by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1760\r\n* feat: use `ContextKey` as stable key for connections by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1761\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha29...v1.0.0-alpha30","2026-03-14T19:52:43",{"id":255,"version":256,"summary_zh":257,"released_at":258},345343,"v1.0.0-alpha29","## What's Changed\r\n* fix(surrealdb): validate and escape input identifiers and IDs properly by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1748\r\n* chore: align `embed()` between SentenceTransformer and LiteLLM embedder by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1759\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha28...v1.0.0-alpha29","2026-03-13T00:35:27",{"id":260,"version":261,"summary_zh":262,"released_at":263},345344,"v1.0.0-alpha28","## What's Changed\r\n* Change security vulnerability report email address by @badmonster0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1688\r\n* Add Ladybug (successor to Kuzu) as a target by @prrao87 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1487\r\n* chore: upgrade dependencies by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1710\r\n* chore: upgrade more dependencies by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1711\r\n* feat: tighten validation on table names \u002F column names for targets by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1714\r\n* fix: make sure execution plan initialized after target setup done by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1715\r\n* ci(deps): bump actions\u002Fattest-build-provenance from 3 to 4 by @dependabot[bot] in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1722\r\n* ci(deps): bump actions\u002Fdownload-artifact from 7 to 8 by @dependabot[bot] in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1724\r\n* ci(deps): bump actions\u002Fupload-artifact from 6 to 7 by @dependabot[bot] in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1723\r\n* ci(deps): bump lycheeverse\u002Flychee-action from 2.7.0 to 2.8.0 by @dependabot[bot] in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1721\r\n* fix: `--root-dir` required for lychee by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1728\r\n* feat(surrealdb): add target connector for SurrealDB by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1746\r\n* chore: upgrade dependency for examples by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1750\r\n* refactor: move `output_positions.rs` to crate root by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1751\r\n* refactor: move more elements out of `split` module by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1752\r\n* chore: ignore all errors and warn in `list()` for `LocalFile` source by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1753\r\n* fix(release): explicitly pin interpreter version for `maturin` by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1755\r\n* merge: main into v1 by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1757\r\n* fix(release): pass on `maturin-args` to `maturin-actions` by @georgeh0 in https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fpull\u002F1758\r\n\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fcocoindex-io\u002Fcocoindex\u002Fcompare\u002Fv1.0.0-alpha27...v1.0.0-alpha28","2026-03-12T16:15:41"]