10 分钟跑通 CocoIndex:从零搭建你的第一个向量索引

10 分钟跑通 CocoIndex:从零搭建你的第一个向量索引 10 分钟跑通 CocoIndex从零搭建你的第一个向量索引【免费下载链接】cocoindexIncremental engine for long horizon agents Star if you like it!项目地址: https://gitcode.com/GitHub_Trending/co/cocoindex手头一堆 Markdown 文档却只能靠搜关键词找答案——换个说法提问就一无所获。CocoIndex 就是来解决这个问题的它是一款开源数据索引引擎也是目前首个支持自定义转换逻辑与增量更新的开源引擎。按本指南操作10 分钟后你会拥有一个真正的向量索引每个文档片段都被转成语义向量存进数据库用意思而不是字面来检索并且以后只改一个文件就只重建那一个文件的索引。为什么关键词搜索不够用设想这样一个场景你的知识库里有几十份技术文档用户问增量处理是怎么工作的可文档原文里从没出现过增量处理这四个字的组合。传统全文检索直接落空而语义检索却能命中——因为向量索引比较的是含义不是词面。这正是向量索引的价值所在图片能按长得像搜到文本能按意思接近搜到。而把非结构化数据文本、图片、PDF变成可检索的向量中间的清洗、分块、嵌入、入库逻辑以前得自己写一堆调度代码来维护。CocoIndex 想做的就是让你只用纯 Python 声明输入到输出的转换规则增量调度、变更追踪这些脏活累活交给引擎。CocoIndex 凭什么值得你花时间CocoIndex 的核心能力可以概括成三件事提取从本地目录、对象存储、数据库等各种来源读取数据转换用你自己的 Python 函数处理数据——分块、调 LLM、生成嵌入想怎么自定义都行索引把结果写入 Postgres、LanceDB、Qdrant 等多种目标并自动维护向量索引。最关键的差异点在增量二字。传统批处理脚本每次都是全量重跑CocoIndex 会记录每份源数据和每段处理逻辑的指纹源文件没变就跳过变了就只重算受影响的部分。逻辑本身改动比如换了分块参数、换了嵌入模型也能被检测到并按最小代价重建。这意味着索引规模再大维护成本也和变化的数据量成正比而不是和总数据量成正比——这对任何长期运行的 RAG 或搜索系统都是实打实的省钱。跑通之前装好三样东西准备工作只有三件事都很快。1. 安装 CocoIndex 及其嵌入依赖pip install -U cocoindex[embeddings]2. 准备一个 Postgres 数据库向量数据的落点。本地有 Docker 的话用仓库自带的 compose 配置最省事docker compose -f dev/postgres.yaml up -d export COCOINDEX_DATABASE_URLpostgresql://cocoindex:cocoindexlocalhost:5432/cocoindex3. 准备输入数据。建一个项目目录再放一个markdown_files文件夹里面塞几份 Markdown 文件即可没有现成材料的话仓库里的官方文档目录就附带了示例包docs/src/content/docs/getting_started/markdown_files.zip。mkdir cocoindex-quickstart cd cocoindex-quickstart mkdir markdown_files装好了真正的主角——索引流——登场。索引流怎么工作分块、嵌入、入库三步别被定义索引流吓到它就是一段普通 Python思路分三步和你在纸面上描述的完全一致读文件 → 切块 → 向每块要一个向量 → 存库。第一步是分块。嵌入模型一次吃不了整篇长文需要把文档切成大小合适、又略带重叠的块避免一个意思被拦腰斩断。用递归分块器指定按 Markdown 语言规则切、块长 2000 字符、重叠 500chunks splitter.split(text, languagemarkdown, chunk_size2000, chunk_overlap500)第二步是生成嵌入向量。对每个块调用本地嵌入模型sentence-transformers/all-MiniLM-L6-v2——它小巧、快速、无需任何 API key跑在本地就把文本变成一组浮点数embedding embedder.embed(chunk)第三步是导出到 Postgres。把文件名 块位置声明为主键同一块重跑时是覆盖更新而非重复插入并声明一个基于余弦相似度的向量索引后续按语义距离检索才有性能保障。整段流程写在一个main.py里用cocoindex提供的装饰器把处理函数注册进管道即可。完整可运行的写法直接参考仓库里的示例examples/text_embedding/那是这套分块 → 嵌入 → 存 pgvector流程的完整实现连查询演示都写好了。一条命令构建索引输出怎么看执行只有一条命令cocoindex update main它做的事情是扫描markdown_files里的文档逐块生成向量建表、建索引、写入 Postgres。跑完后终端会给出统计类似documents: 3 added, 0 removed, 0 updated看到3 added说明三份文档的向量都已入库索引构建成功。怎么验证它真的能按意思搜直接用示例自带的查询脚本提问——问一个和原文措辞完全不同但语义相同的问题python main.py what is self-attention?返回的结果按相似度排序最相关的文本块排在最前。命中一块和查询毫无共同词汇的段落就说明你的向量索引真正在工作了。顺带一提增量能力也值得亲手验证一次往markdown_files里丢一个新文件再跑一遍cocoindex update main统计里只会显示新增的那一份其余原样跳过。加-L参数cocoindex update -L main则进入实时模式持续监听文件变化、来一份同步一份。走得更远你的索引还能指向哪里跑通最小闭环之后可以沿三个方向扩展换数据源和目标存储仓库内置了二十多个连接器——S3、Azure Blob、GCS、Kafka、Neo4j、SurrealDB、LanceDB、Qdrant 等都在 python/cocoindex/connectors/ 下向量库换一家往往只是改几行挂载代码看更多完整示例examples/ 里有图片搜索、PDF 转 Markdown、知识图谱、音频转文字、多格式统一索引等二十多个场景每个都附 README挑一个离你业务最近的照着改最快补理论底子官方文档的入门部分在 docs/src/content/docs/getting_started/其中编程指南programming guide会讲透目标状态 转换(源状态)这套心智模型理解它之后写复杂管道就只是组合问题。从一个文件夹的 Markdown到按语义检索的向量索引中间只隔了一个main.py和一条cocoindex update main。剩下的就是把真实数据接进来让增量引擎替你跑下去了。【免费下载链接】cocoindexIncremental engine for long horizon agents Star if you like it!项目地址: https://gitcode.com/GitHub_Trending/co/cocoindex创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考