返回首页
最新
嗨,HN,我一直在开发 CocoIndex,这是一个开源的数据 ETL 框架,旨在为 AI 转换数据,并优化数据的新鲜度。
您可以通过 `pip install cocoindex` 开始一个 CocoIndex 项目,并声明一个数据流,像搭 LEGO 一样构建 ETL——为向量嵌入、知识图谱构建 RAG 管道,或使用 LLM 提取和转换数据。这是一个超越文本的数据处理框架。当您以实时模式或批处理模式运行数据流时,它将以增量方式处理数据,最小化重新计算,并在源数据发生变化时快速更新目标存储。
入门视频:<a href="https://www.youtube.com/watch?v=gv5R8nOXsWU" rel="nofollow">https://www.youtube.com/watch?v=gv5R8nOXsWU</a>
演示视频:<a href="https://www.youtube.com/watch?v=ZnmyoHslBSc" rel="nofollow">https://www.youtube.com/watch?v=ZnmyoHslBSc</a>
之前,我在谷歌工作了 8 年,参与了搜索索引和 ETL 基础设施等项目。去年离开谷歌后,我构建了各种项目,并经历了许多转型的挑战。在我构建的所有项目中,数据始终是问题的核心,我发现自己专注于构建数据基础设施,而不是我所需的数据转换业务逻辑。目前的预打包 RAG 服务无法满足我的需求,因为我需要为上下文选择不同的策略,同时还需要去重、聚类(项目之间相关)和其他常见的自定义功能。这就是 CocoIndex 的起点。
其背后有一个简单的理念——数据转换类似于电子表格中的公式。真相的基础在于源数据,所有的转换步骤和最终目标存储都是派生数据,应该基于源数据的变化而具有反应性。如果您使用 CocoIndex,您只需关注定义转换,就像定义公式一样。
*数据流范式* 是一个直接的选择——因为没有副作用,数据的血缘和可观察性都是开箱即用的。
*增量处理*——如果您是数据专家,可以将其类比为超越 SQL 的物化视图。该框架在数据库中跟踪管道状态,仅重新处理必要的部分。当数据发生变化时,框架全面处理变更数据捕获,并结合推送和拉取机制。然后清除过时的派生数据/版本,并根据跟踪数据/逻辑变化或数据 TTL 设置重新索引数据。处理这些边缘情况有很多细节,例如,当某一行在其他地方被引用且该行发生变化时,这些都应在框架层面进行处理。
*在计算引擎层面*——框架应考虑多个进程和并发更新。它还应考虑如何从终止的执行中恢复现有状态。最终,我们希望构建一个易于构建、具有卓越速度,但在生产中可扩展且稳健的框架。
*在整个数据流中标准化接口*——非常容易像 LEGO 一样插入自定义逻辑;并且具有多种内置组件。例如,仅需几行代码即可在 Qdrant、Postgres 和 Neo4j 之间切换。
CocoIndex 采用 Apache 2.0 许可证 <a href="https://github.com/cocoindex-io/cocoindex">https://github.com/cocoindex-io/cocoindex</a>
入门指南:<a href="https://cocoindex.io/docs/getting_started/quickstart" rel="nofollow">https://cocoindex.io/docs/getting_started/quickstart</a>
期待听到您的想法,非常感谢!
Linghua
Beta版本将在几周内推出 — 希望能收到关于目前方向的反馈。
网站: <a href="https://www.pagepalapp.com" rel="nofollow">https://www.pagepalapp.com</a>
演示: <a href="https://www.pagepalapp.com/#demo" rel="nofollow">https://www.pagepalapp.com/#demo</a>
加入Beta测试: <a href="https://www.pagepalapp.com/#subscribe" rel="nofollow">https://www.pagepalapp.com/#subscribe</a>
嘿,HN,
大约二十年前,当我在大学时,我第一次接触到詹姆斯·普罗普的自指能力测试(Self-Referential Aptitude Test),我非常喜欢这个测试。从那时起,我就有了将这个概念变成每日游戏的想法,现在我终于实现了: [https://www.logiquiz.com](https://www.logiquiz.com)
这个游戏界面会根据你给出的答案检查每个问题,因此不会通过透露答案来破坏游戏的乐趣。
每天有五个不同的测试,难度从非常简单到非常困难。
我很想听听你们的看法!
[1]: [https://faculty.uml.edu/jpropp/srat-Q.txt](https://faculty.uml.edu/jpropp/srat-Q.txt)
你好,HN!<p>Advanced Alchemy 是一个针对 SQLAlchemy 的优化伴侣库,旨在通过强大的工具提升你的数据库模型,包括迁移、异步支持、生命周期钩子等功能。<p>你可以在这里找到代码库和文档:<p><pre><code> - GitHub 代码库: https://github.com/litestar-org/advanced-alchemy
- 官方文档: https://docs.advanced-alchemy.litestar.dev/latest/
</code></pre>
Advanced Alchemy 在保持与你已知生态系统的完全兼容性的同时,扩展了 SQLAlchemy 的生产力增强功能。<p>Advanced Alchemy 的核心功能包括:<p>- 同步和异步的存储库,提供常见的 CRUD 操作和高度优化的批量操作<p>- 与主要网络框架的集成,包括 Litestar、Starlette、FastAPI、Sanic<p>- 自定义的 alembic 配置和 CLI,支持可选的框架集成<p>- 带有审计列、主键和实用函数的基础类<p>- 内置的文件对象数据类型,用于存储对象:<p><pre><code> - 统一的接口,支持各种存储后端 fsspec 和 obstore
- 可选的生命周期事件钩子,与 SQLAlchemy 的事件系统集成,自动保存和删除文件,当记录被插入、更新或删除时。
</code></pre>
- 优化的 JSON 类型,包括针对 Oracle 的自定义 JSON 类型<p>- 集成对 UUID6 和 UUID7 的支持,使用 uuid-utils<p>- 集成对 Nano ID 的支持,使用 fastnanoid<p>- 预配置的基础类,带有审计列 UUID 或大整数主键和哨兵列。<p>- 同步和异步存储库,具有:<p><pre><code> - SQLAlchemy 模型的常见 CRUD 操作
- 带有特定方言增强的批量插入、更新、插入或更新和删除
- 集成计数、分页、排序、过滤,支持 LIKE、IN 以及日期的前后比较。
</code></pre>
- 对多个数据库后端的测试支持,包括:<p><pre><code> - 通过 aiosqlite 或 sqlite 支持 SQLite
- 通过 asyncpg 或 psycopg3(异步或同步)支持 Postgres
- 通过 asyncmy 支持 MySQL
- 通过 oracledb(异步或同步)支持 Oracle(在 18c 和 23c 上测试)
- 通过 spanner-sqlalchemy 支持 Google Spanner
- 通过 duckdb_engine 支持 DuckDB
- 通过 pyodbc 或 aioodbc 支持 Microsoft SQL Server
- 通过 sqlalchemy-cockroachdb(异步或同步)支持 CockroachDB
</code></pre>
该框架旨在轻量且强大,具有简洁的 API,便于集成到现有项目中。<p>你可以在这里找到使用 FastAPI 的完整示例:<a href="https://docs.advanced-alchemy.litestar.dev/latest/usage/frameworks/fastapi.html" rel="nofollow">https://docs.advanced-alchemy.litestar.dev/latest/usage/frameworks/fastapi.html</a><p>该库包含自定义数据类型、服务和存储库(包括优化的批量操作),并与 Flask、FastAPI、Starlette、Litestar 和 Sanic 原生集成。<p>欢迎任何反馈和改进!我们有一个活跃的 Discord 社区,如果你在问题上没有得到回应,或者想直接与开发团队聊天,请随时联系。<p>库地址:<a href="https://github.com/litestar-org/advanced-alchemy">https://github.com/litestar-org/advanced-alchemy</a>