resin
Resin 是一款专为大语言模型打造的向量搜索引擎,同时兼具高性能键值存储功能。它旨在解决传统系统在高效处理字符串、执行向量运算以及灵活存储多样化数据时的架构复杂与性能瓶颈问题,让开发者能够轻松从文本构建语言模型,或从字节数组生成通用数据模型。
这款工具特别适合后端开发者、AI 研究人员以及需要构建自定义搜索基础设施的技术团队使用。如果你正在寻找一个轻量级、低依赖且易于扩展的基础组件来加速原型开发或优化现有架构,Resin 是理想之选。
其核心技术亮点在于独特的“列式键值存储”设计:支持快速的页面读写操作,并能智能处理键的重复插入——通过链表机制将新值追加到已有键后,而非简单覆盖或拒绝。此外,Resin 内置了实用的文本分析工具和命令行实用程序,方便用户构建词库和比对字符串。整体架构简洁清晰,对数值型键提供了确定性的排序与查找优化,确保在大规模数据场景下依然保持高速响应。
使用场景
某电商团队正在构建一个实时商品评论语义检索系统,需要从海量历史数据中快速匹配用户查询意图并聚合多版本评论详情。
没有 resin 时
- 传统关系型数据库在处理高维向量相似度搜索时延迟极高,无法在毫秒级返回相关评论。
- 当同一商品存在多条追加评论时,需编写复杂的关联查询逻辑来拼接数据,代码维护成本高且易出错。
- 引入重型向量数据库导致依赖臃肿,部署资源消耗大,难以在边缘节点或轻量容器中运行。
- 自定义键值存储缺乏严格的列级去重机制,容易因并发写入产生重复数据,破坏索引一致性。
使用 resin 后
- 利用内置的向量空间搜索引擎,直接基于评论语义向量进行毫秒级模糊匹配,显著提升检索响应速度。
- 通过
PutOrAppend语义自动将同一商品 ID 的多条追加评论链接为有序列表,读取时一键获取完整上下文,无需额外 JOIN 操作。 - 凭借轻量无依赖的架构,将检索服务打包为极小的二进制文件,轻松部署至低资源环境并保持高性能。
- 依托列级快照与二分查找机制,天然保证键的唯一性与排序稳定性,彻底杜绝数据冗余并简化并发控制逻辑。
resin 通过将向量检索、智能键值存储与极简架构深度融合,让开发者能以最低成本构建高性能的语义数据应用。
运行环境要求
未说明
未说明

快速开始
Resin
简介
这是对旧版 Resin 搜索引擎/机器学习项目的重启动作,采用了更为合理的架构,但功能尚未完全完善。
Resin 是一款向量空间搜索引擎、向量数据库以及通用键值存储系统。它支持高效的字符串处理、向量运算,并提供专为速度与简洁性设计的自定义存储原语。Resin 可以从字符串中构建大型语言模型,也可以从字节数组中构建大型“任意”模型。
亮点
- 基于页和列的读写器实现的快速键值存储
- 针对字符串、词袋/字符集以及向量的实用文本分析工具
- 用于构建和验证词典以及比较字符串的命令行工具
- 设计简洁、依赖轻量且易于扩展
键值列语义
ColumnWriter
TryPut(TKey key, ReadOnlySpan
value) - 仅当键在列范围内的快照中不存在时(包括之前页面中的键)才插入键值对。
- 如果键已存在,则返回
false;否则将值写入当前页。 - 当页面满时,会触发页面序列化。
PutOrAppend(TKey key, ReadOnlySpan
value) - 如果键在列中的任何位置已经存在,则不会存储新键。相反,值会通过固定大小的节点(
LinkedAddressNode)链接到值流中。 - 尾部追加顺序:原始值保持在最前面,随后按插入顺序依次追加其他值。当链接生效时,该键的地址条目会指向链表头。
- 如果键在列快照中不存在,则在页面级别操作(在当前页面内插入或追加),并在页面满时可能触发序列化。
- 如果键在列中的任何位置已经存在,则不会存储新键。相反,值会通过固定大小的节点(
ColumnReader
Get(TKey key)
- 返回指定键的值。如果该键的地址条目指向一个链表头,则返回所有链接值的拼接字节。
- 如果键不存在,则返回
ReadOnlySpan<byte>.Empty。
GetMany(TKey key, out int count)
- 返回与指定键关联的所有值的拼接
ReadOnlySpan<byte>,并通过count输出项数。 - 如果该键指向单个原始值,则返回该值并设置
count = 1。如果键不存在,则返回空并设置count = 0。
- 返回与指定键关联的所有值的拼接
TKey 对 ColumnWriter/ColumnReader 的限制
在使用 TKey 时,请遵守以下限制以确保正常运行:
TKey必须是值类型(struct),并且同时实现IEquatable<TKey>和IComparable<TKey>。- 排序和相等性必须在不同会话之间保持稳定。列范围内的键快照使用二分查找/排序,因此
CompareTo必须定义一个与Equals一致的严格全序关系。 - 页面级存储使用
long类型的键。对于原始数值类型的键:double和float通过其 IEEE 位表示形式存储。int和long直接存储。- 其他
TKey类型则通过GetHashCode()哈希为long,以便在页面级别操作。
- 建议:使用数值原语类型(
double、float、int、long)以实现确定性的排序和查找。如果使用自定义结构体,请确保:Equals和CompareTo一致且具有确定性。GetHashCode()稳定且分布均匀;哈希冲突会影响页面级别的操作,因为非原语类型的键会被哈希为long。
- 键在整个列范围内必须可比较;重复键的检测依赖于列快照和对已排序键的二分查找。
列模型与集合操作
- 每列在其列范围内的快照中最多存储一次给定的
TKey(TryPut和PutOrAppend都会防止重复键)。这使得列实际上成为键的集合,从而可以进行并集、交集和跨列连接等集合操作。通过PutOrAppend链接的值会在不引入重复键的情况下为现有键附加额外数据。
存储文件格式:.key、.adr、*.val
- .key(键流)
- 存储每页/每列的
TKey表示形式的排序序列。键以固定大小的槽位写入(页面级存储每个条目占用sizeof(long)),并按页面批次进行序列化。列范围内的快照通过读取并排序此流来构建。
- 存储每页/每列的
- .adr(地址流)
- 存储与
.key条目对齐的Address结构体。每个Address包含Offset和Length:- 对于原始值:直接指向
.val流(Offset 为值的起始位置,Length 为字节长度)。 - 对于链接值:指向
.val流中的LinkedAddressNode头(Length 等于节点大小)。通过节点链可以获取单个键的多个值。
- 对于原始值:直接指向
- 存储与
- .val(值流)
- 存储实际的值字节以及用于链接的
LinkedAddressNode头。值追加写入流的末尾;LinkedAddressNode也会写入.val流,通过绝对偏移形成单向链表。
- 存储实际的值字节以及用于链接的
值文件的不可变性
.val流被视为只追加模式:- 已有字节绝不会被就地修改。
- 新值始终写入末尾,保留先前写入的偏移量。
- 链接操作不会重写现有值;而是追加
LinkedAddressNode头,并通过更新.adr中的指针来修补前一个节点的NextOffset。
- 优点:
- 稳定的偏移量使得地址可以安全缓存,读取路径也更加高效。
- 追加操作呈线性扩展,可最大限度减少碎片并避免就地修改。
- 历史值得以完整保留;多值链通过节点头表达,而非覆盖数据。
使用方法
- 使用
Resin.KeyValue实现快速的磁盘结构以及高效的键值读写会话。 - 使用
Resin.TextAnalysis进行字符串分析、向量运算及相似度计算。 - 使用
Resin.WikipediaCommandLine提供的命令行工具来构建或验证词典。详细的 CLI 使用方法和设置请参阅Resin.WikipediaCommandLine/README.md。
贡献
欢迎贡献!请提交带有明确动机的问题或拉取请求,并在适用时附上测试用例和简洁的更改说明。
许可证
本项目采用 MIT 许可证。
获取帮助或报告问题
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器