CocoIndex 向量索引 10 分钟教程:把 Markdown 文件夹变成可语义搜索的 Postgres 向量库
CocoIndex 向量索引 10 分钟教程把 Markdown 文件夹变成可语义搜索的 Postgres 向量库【免费下载链接】cocoindexIncremental engine for long horizon agents Star if you like it!项目地址: https://gitcode.com/GitHub_Trending/co/cocoindex你手里攒了一堆 Markdown 文档想做按语义搜索却不知道从哪建索引。CocoIndex 向量索引就是干这件事的开源引擎你用 Python 声明目标里该长什么样Rust 引擎负责把库和目标持续对齐。文件改了一个它就只重新处理那一个。先给你看终点再倒推过程。 先跑一遍看成果想象你敲完最后一条命令终端给出这个$ cocoindex update main documents: 3 added, 0 removed, 0 updatedadded是这次新入库的文档数removed是源文件删除后引擎顺手清掉的行数updated是内容变动后重算的行数。跑通之后你手里多了一张 Postgres 表doc_embeddings每个文档块一行存着文本、文件名、字符偏移和 embedding 向量embedding 就是文本的向量表示语义越近的文本向量距离越近embedding 列上还挂了一个 pgvector 向量索引直接按余弦相似度查。这张动图展示引擎的核心动作每次运行只重算变化的那部分而不是把整个语料重新洗一遍。️ 装好环境安装 CocoIndex[embeddings]附带本地向量化所需的依赖pip install -U cocoindex[embeddings]起一个带 pgvector 插件的 Postgres。CocoIndex 用它存向量配置文件dev/postgres.yaml就在仓库里docker compose -f dev/postgres.yaml up -d创建你自己的项目目录mkdir cocoindex-quickstart cd cocoindex-quickstart放几份示例 Markdown 进去mkdir markdown_files cd markdown_files curl -L -O https://gitcode.com/GitHub_Trending/co/cocoindex/raw/main/docs/src/content/docs/getting_started/markdown_files.zip unzip markdown_files.zip cd ..markdown_files.zip是仓库自带的三篇示例文档后面会直接跑它们。 读懂核心代码新建main.py按下面四段走读。第一段是数据行每行代表一个文档块chunking把长文档切成小块再逐块向量化from dataclasses import dataclass from typing import Annotated import cocoindex as coco from cocoindex.connectors import localfs, postgres from cocoindex.ops.text import RecursiveSplitter from cocoindex.ops.sentence_transformers import SentenceTransformerEmbedder from cocoindex.resources.file import FileLike, PatternFilePathMatcher from cocoindex.resources.id import IdGenerator import numpy.typing import pathlib EMBED_MODEL sentence-transformers/all-MiniLM-L6-v2 _splitter RecursiveSplitter() dataclass class DocEmbedding: id: int filename: str chunk_start: int chunk_end: int text: str embedding: Annotated[numpy.typing.NDArray, EMBED_MODEL]DocEmbedding就是将来表里的一行。embedding字段用Annotated标注了模型名维度由嵌入器自动推断不用手写。第二段是文件级处理函数分块和向量化都发生在里面coco.fn(memoTrue) async def process_file(file: FileLike, table: postgres.TableTarget[DocEmbedding]): text await file.read_text() chunks _splitter.split(text, chunk_size2000, chunk_overlap500, languagemarkdown) id_gen IdGenerator() for chunk in chunks: table.declare_row( rowDocEmbedding( idawait id_gen.next_id(chunk.text), filenamefile.file_path.path.name, chunk_startchunk.start.char_offset, chunk_endchunk.end.char_offset, textchunk.text, embeddingawait SentenceTransformerEmbedder(EMBED_MODEL).embed(chunk.text), ) )RecursiveSplitter按 Markdown 结构把文档切成约 2000 字的块相邻块重叠 500 字跨边界的想法不会被拦腰截断。每个块交给本地模型all-MiniLM-L6-v2生成向量不用 API key不出内网。头部的memoTrue是关键引擎给函数输入和代码算指纹文件没变下次直接跳过。第三段挂目标、接数据源coco.fn async def app_main(sourcedir: pathlib.Path): table await postgres.mount_table_target( DATABASE_URL, table_namedoc_embeddings, table_schemaawait postgres.TableSchema.from_class(DocEmbedding, primary_key[id]), ) table.declare_vector_index(columnembedding) files localfs.walk_dir( sourcedir, recursiveTrue, path_matcherPatternFilePathMatcher(included_patterns[**/*.md]), ) await coco.mount_each(process_file, files.items(), table)mount_table_target按 dataclass 自动建表、接管后续所有 upsert 和清理declare_vector_index给 embedding 列加上 pgvector 向量索引walk_dir递归列出全部.md文件mount_each给每个文件挂一个处理组件文件级互不干扰。最后把一切绑成一个应用DATABASE_URL postgres://cocoindex:cocoindexlocalhost:5432/cocoindex app coco.App( coco.AppConfig(nameTextEmbedding), app_main, sourcedirpathlib.Path(./markdown_files), )coco.App就是 CocoIndex 的运行单元入口函数、输入目录、应用名三样绑好交给 CLI 调度。▶️ 运行并验证数据库地址已经在代码里写死这里只需要告诉 CocoIndex 自己把状态存哪export COCOINDEX_DB./cocoindex.db cocoindex update main第一条命令指定状态库位置默认就是本地一个 SQLite 文件引擎在里面记录每个文件的处理指纹增量更新全靠它。首次运行要下载all-MiniLM-L6-v2模型稍等片刻成功后看到上面那行documents: 3 added...。确认数据真的落库连进 Postgres 看一眼psql postgres://cocoindex:cocoindexlocalhost:5432/cocoindex -c SELECT count(*), vector_dims(embedding) FROM cocoindex.doc_embeddings;它会告诉你表里有多少行、向量维度是多少。仓库自带的examples/text_embedding/main.py里还带一个交互式查询脚本可以跑python main.py what is self-attention?用同一个模型把问题向量化后按相似度返回最相近的块。 接下来看什么想深入原理读 官方文档 的 Core Concepts 和 Programming Guide。仓库根目录的 examples/ 有 20 多个完整示例image_search/ 做以图搜图meeting_notes_graph_neo4j/ 把会议笔记长成知识图谱postgres_source/ 从 Postgres 读源数据。照抄一个目录改两行配置就能变成你自己的索引。现在建个空目录、丢进几份 Markdown跑一遍cocoindex update main你的第一个向量索引就建好了。【免费下载链接】cocoindexIncremental engine for long horizon agents Star if you like it!项目地址: https://gitcode.com/GitHub_Trending/co/cocoindex创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

安卓开发组长核心能力与面试指南

安卓开发组长核心能力与面试指南

1. 安卓开发组长角色全景解析 在移动互联网行业深耕8年,我带过3个安卓团队,面过不下50位安卓组长候选人。这个岗位远不止是"技术好就能胜任"那么简单。先看一组真实数据:2023年某招聘平台显示,安卓组长岗位的平均薪资比…

2026/8/24 1:18:19 阅读更多 →
Android应用开发中的回声消除AEC实战:原理、方案与WebRTC集成详解

Android应用开发中的回声消除AEC实战:原理、方案与WebRTC集成详解

1. 项目概述:为什么Android应用开发绕不开回声消除AEC?如果你做过Android端的语音通话、会议、直播或者语音助手类应用,大概率遇到过这样的场景:用户反馈通话时对方总能听到自己说话的回音,或者自己说话的声音被重复播…

2026/8/24 1:18:19 阅读更多 →
WINUSB设备开发实战:从免驱原理到STM32与PC端通信全解析

WINUSB设备开发实战:从免驱原理到STM32与PC端通信全解析

1. 项目概述:WINUSB设备到底是什么?如果你在Windows的设备管理器里看到过一个叫“通用串行总线设备”或者“USB Composite Device”的东西,旁边可能还带个黄色感叹号,那大概率就是WINUSB设备了。很多搞嵌入式开发、玩单片机或者折…

2026/8/24 1:18:19 阅读更多 →

最新新闻

LLM API 上线前 FAQ、故障排查与生产检查清单:小团队如何避免 401、超时和成本失控

LLM API 上线前 FAQ、故障排查与生产检查清单:小团队如何避免 401、超时和成本失控

# LLM API 上线前 FAQ、故障排查与生产检查清单:小团队如何避免 401、超时和成本失控ViralAPI 是面向开发者、小团队和自动化业务场景的 OpenAI-compatible 多模型 API 网关,支持按场景接入 Claude、GPT、Gemini 等模型,并提供不同稳定性与成…

2026/8/24 3:15:05 阅读更多 →
飞行人形机器人技术解析:从全身控制到Gazebo仿真实践

飞行人形机器人技术解析:从全身控制到Gazebo仿真实践

1. 背景与核心概念:人形机器人的“飞行”突破在机器人技术日新月异的今天,我们见证了从工业机械臂到服务机器人的巨大跨越。然而,一个长久以来的技术梦想——让仿人形态的机器人真正摆脱地面束缚,实现自由飞行——始终是行业内的“…

2026/8/24 3:15:05 阅读更多 →
Ubuntu Python虚拟环境创建与管理:venv与conda实战指南

Ubuntu Python虚拟环境创建与管理:venv与conda实战指南

1. 项目概述:为什么我们需要虚拟环境?在Ubuntu上折腾项目,尤其是Python项目,相信不少朋友都踩过同一个坑:系统里装了一堆不同版本的库,A项目需要numpy1.21,B项目却要求numpy1.24,最后…

2026/8/24 3:15:05 阅读更多 →
基于Coze平台构建多智能体协作AI团队:从原理到项目实战

基于Coze平台构建多智能体协作AI团队:从原理到项目实战

如果你是一名开发者,最近一定被各种“智能体”、“Agent”、“AI工作流”刷屏了。但你是否也感到困惑:这些概念听起来很酷,但到底能解决我工作中的什么实际问题?是又一个需要投入大量时间学习的“新玩具”,还是能真正提…

2026/8/24 3:15:05 阅读更多 →
对话式需求响应:基于Agentic AI的产消者与聚合商双向协调

对话式需求响应:基于Agentic AI的产消者与聚合商双向协调

1. 项目概述:当家庭能源管理遇上“智能体” 最近几年,我一直在关注能源互联网和智能电网的落地应用。一个绕不开的核心话题,就是 需求响应 。传统的需求响应,有点像电力公司单向发号施令:“今晚8点到9点,…

2026/8/24 3:15:05 阅读更多 →
Mastra 工作流重试机制与错误处理:3 步实现零失败的完整指南

Mastra 工作流重试机制与错误处理:3 步实现零失败的完整指南

Mastra 工作流重试机制与错误处理:3 步实现零失败的完整指南 【免费下载链接】mastra Mastra is the modern TypeScript framework for AI-powered applications and agents. 项目地址: https://gitcode.com/GitHub_Trending/ma/mastra 一次上游接口抖动&…

2026/8/24 3:14:04 阅读更多 →

日新闻

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践 前端安全依赖分层防护。没有任何单一配置能替代输出编码、权限校验和依赖更新。 把不可信内容当作数据 默认使用框架的转义能力;确需渲染 HTML 时,先在服务端或可信的客户端库中进行白名单过滤。避免把用户输入直接赋给 inne…

2026/8/24 1:08:15 阅读更多 →
Windows登录密码存储机制全解析:从哈希算法到安全加固实战

Windows登录密码存储机制全解析:从哈希算法到安全加固实战

1. 项目概述:Windows登录密码的“黑匣子”每次你按下CtrlAltDel,输入密码,然后看到那个熟悉的桌面,这背后发生了一系列复杂而精密的操作。作为一名长期与Windows系统打交道的从业者,我经常被问到:“我的密码…

2026/8/24 1:08:15 阅读更多 →
AI面试系统安全挑战与解决方案

AI面试系统安全挑战与解决方案

1. 项目概述:AI面试系统的安全挑战去年参与某跨国企业AI面试系统部署时,遇到一个典型案例:候选人在视频面试中无意提到竞争对手产品名称,系统竟自动将该信息关联到企业知识库并生成竞品分析报告。这个看似"智能"的功能&…

2026/8/24 1:08:15 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 0:06:02 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 0:20:20 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 0:14:11 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →