9作者: GeorgeCurtis6 天前原帖
大家好,我们想分享一下 HelixDB(<a href="https://github.com/HelixDB/helix-db/">https://github.com/HelixDB/helix-db/</a>),这是我和一位大学朋友正在合作的项目。它是一种新型数据库,能够原生地将图形和向量类型结合在一起,而不会牺牲性能。该项目使用 Rust 编写,我们的初步重点是支持 RAG。这里有一个视频演示:<a href="https://screen.studio/share/szgQu3yq" rel="nofollow">https://screen.studio/share/szgQu3yq</a>。 <p>为什么要采用混合模式?向量数据库在相似性查询中非常有用,而图数据库在关系查询中则表现出色。每种数据库都以最适合其主要查询类型的方式存储数据(例如,键值存储与节点-边表)。然而,许多基于 AI 的应用需要同时进行相似性和关系查询。例如,您可能会使用基于向量的语义搜索来检索相关的法律文件,然后使用图遍历来识别案件之间的关系。 <p>开发此类应用的开发者面临的困境是需要在两个不同的数据库(一个向量数据库和一个图数据库)之上构建,同时还需要将它们连接在一起并同步数据。即便如此,您的两个数据库并不是为了协同工作而设计的——例如,没有原生的方法可以执行跨越两个系统的连接或查询。您需要在应用层处理这些逻辑。 <p>Helix 的起源在于我们意识到有一些方法可以将向量和图数据快速且适合 AI 应用(尤其是基于 RAG 的应用)进行集成。请参阅这篇有趣的研究论文:<a href="https://arxiv.org/html/2408.04948v1" rel="nofollow">https://arxiv.org/html/2408.04948v1</a>。在阅读了这篇论文以及其他关于图和混合 RAG 的论文后,我们决定构建一个混合数据库。我们的目标是从开发者的角度出发,创造出更易于使用的工具,同时确保性能极为出色。 <p>经过几个月的侧项目开发,我们的基准测试显示,我们在向量处理方面与 Pinecone 和 Qdrant 不相上下,而我们的图数据库在性能上比 Neo4j 快三个数量级。 <p>混合方法特别适合解决以下问题: <p>- 代码库索引:您可以根据上下文对函数内的代码片段进行向量化(通过边连接),然后从函数调用、导入、依赖关系等创建抽象语法树(AST,图形式)。代理可以通过相似性或关键字查找代码,然后遍历 AST 以获取相关代码,从而减少幻觉,并防止大型语言模型(LLM)猜测对象形状或变量/函数名称。 <p>- 分子发现:使用图类型建模生物相互作用(例如,蛋白质 → 基因 → 疾病),然后嵌入分子结构以查找相似化合物或案例研究。 <p>- 企业知识管理:您可以以图形形式表示组织结构、项目和人员(例如,员工 → 团队 → 项目),然后将内部文档、电子邮件或笔记索引为向量以进行语义搜索,并直接将其链接到图中的员工/团队/项目。 <p>我天真地以为第一次学习数据库时,查询会像传统编程中的函数那样被编译和执行。结果发现我错了,这种方式通过发送额外的数据(整个查询)造成了不必要的延迟,在运行时编译,然后执行。使用 Helix,您可以使用我们的查询语言(HelixQL)编写查询,然后将其转译为 Rust 代码,直接构建到数据库服务器中,您可以调用生成的 API 端点。 <p>许多人对“又一种查询语言”有抵触(无疑是有充分理由的!),但我们还是决定这样做,因为我们认为这使得与我们的数据库的交互变得更加简单,值得花费一些学习成本。HelixQL 从其他查询语言(如 Gremlin、Cypher 和 SQL)中汲取灵感,并加入了一些额外的想法。它是声明式的,而遍历本身是函数式的。这允许对遍历流程进行完全控制,同时保持更清晰的语法。HelixQL 返回 JSON,以便于客户端使用。此外,它使用模式,因此查询会进行类型检查。 <p>我们在构建最初的图引擎时采取了粗略的方法,以便能够推出 MVP,现在我们正在通过使遍历大规模并行和流水线化来改进图引擎。这意味着数据仅在需要时从磁盘解码,读取的各个部分都是并行处理的。 <p>如果您想在简单的 RAG 演示中试用它,可以按照此指南运行我们的 Jupyter notebook:<a href="https://github.com/HelixDB/helix-db/tree/main/examples/rag_demo">https://github.com/HelixDB/helix-db/tree/main/examples/rag_demo</a>。 <p>非常感谢!欢迎评论和反馈!
1作者: invisibilities6 天前原帖
嘿,HN, 我刚刚推出了一款免费的Chrome扩展程序,名为“Stop Reels”——它可以阻止Instagram、Facebook和TikTok等平台上的短视频/Reels,而不会影响其他功能,比如消息或常规信息流。 ### 我为什么要开发它 和许多人一样,我发现自己在打开这些应用程序时,即使只是为了特定的目的,也会无休止地滚动Reels。算法实在太擅长于劫持注意力了。 虽然有一些工具可以阻止整个网站,但我没有找到可以精确阻止Reels和Shorts,同时保持平台其他功能正常(如私信、帖子、市场等)的工具。 因此,我开发了Stop Reels来实现这一目标。 它是开源的,轻量级(没有追踪器),旨在让社交平台变得更加有意图。 ### 它是如何工作的 它针对已知的Reel容器/类,并将其移除或隐藏。 没有后台追踪或分析——一切都在您的浏览器中运行。 它被设计为模块化,因此添加对其他“无尽滚动”模块的支持非常简单。 它并不完美,平台的DOM结构会不断变化,但我会积极更新。欢迎提出建议和PR! ### 路线图 - Firefox支持 - 可调选项UI,用于微调阻止内容 - 社区源规则系统(类似于uBlock过滤器,但用于关注) 如果您觉得这个工具有帮助,并希望支持持续开发,我在这里接受赞助: [https://github.com/sponsors/iInvisibilities](https://github.com/sponsors/iInvisibilities) 很高兴回答任何问题或听取反馈! —— Khalil
1作者: ashbate6 天前原帖
大家好, 我和我的朋友们一直在开发一款产品,以简化单元测试的编写。我们非常讨厌写单元测试,想要彻底解决这个问题。 我们与周围的人进行了交流,设计了一款目前可以连接Slack和GitHub仓库的产品,然后在Slack上管理所有的单元测试,并创建PR(拉取请求)。没错,后端是基于人工智能的。 我们想知道这样的工具对软件团队是否有价值。你们怎么看?