返回首页
最新
我创建了一个人工智能代理的目录,想了解哪些是最受欢迎和使用频率最高的。你开始使用人工智能代理来帮助处理日常任务了吗?你最喜欢哪个人工智能代理?
每天我(我想大多数知识工作者、开发者和创意工作者也是如此)都会阅读许多文章、论文、代码片段、人工智能的回答、Discord消息等。<p>到一天结束时,这些信息中的一部分很可能已经在你的脑海中留下了印记,而数字版本可以被丢弃。然而,有些信息应该手动保留在某个系统中——或者至少我觉得应该这样做。<p>人们通常使用什么方法来整合和存储这些信息,以便在下一个工作日可以关闭所有标签等?
大家好,我们想分享一下 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>非常感谢!欢迎评论和反馈!