【Rust日报】ChronoMind - 超级快的向量搜索引擎

科技   2025-01-11 22:42   重庆  

通过计算器示例学习JIT

这篇文章介绍了名为"The JIT Calculator Challenge"的挑战。挑战的背景是,Rust官方网站曾经展示过一个简单的计算器程序,这是一个20行代码的解释器。文章提出一个新的挑战:将这个简单的计算器程序改造成一个能够生成并直接在CPU上执行机器代码的JIT(即时编译)计算器。

文章详细解释了JIT的概念,指出与普通的解释器相比,JIT编译器在执行前进行所有计算操作,然后生成并运行机器代码。文章提出了具体的步骤: JIT编译:解析所有操作符,并生成相应的机器代码,顺序执行它们。 运行机器代码:在CPU上执行生成的机器代码。

作者还提到了实现这个挑战所需的背景知识,包括如何在操作系统和处理器级别上处理可执行数据的问题。文章特别指出,现代操作系统允许应用程序动态调整内存的执行权限,这对于JIT编译是必需的。

https://ochagavia.nl/blog/the-jit-calculator-challenge/

同时进行多种方式的序列化/反序列化

serde_many 这个库可以扩展序列化的方式。是一个非常有趣的idea。

use serde_many::{DeserializeMany, SerializeMany};

/// Marker for the default serde implementation.
struct Default;

/// Marker for a special serde implementation.
struct Special;

#[derive(SerializeMany, DeserializeMany)]
#[serde_many(default = "Default", special = "Special")] // Declaring the implementation markers.
struct Point {
    #[serde(special(rename = "x_value"))]
    x: i32,
    #[serde(special(rename = "y_value"))]
    y: i32,
}

#[test]
fn it_works() {
    let mut serialized = Vec::new();
    let mut serializer = serde_json::Serializer::pretty(&mut serialized);
    let val = Point { x: 0, y: 0 };

    SerializeMany::<Default>::serialize(&val, &mut serializer).unwrap();
    assert_eq!(
        String::from_utf8_lossy(&serialized),
        "{
  \"x\": 0,
  \"y\": 0
}"

    );

    serialized.clear();
    let mut serializer = serde_json::Serializer::pretty(&mut serialized);
    SerializeMany::<Special>::serialize(&val, &mut serializer).unwrap();
    assert_eq!(
        String::from_utf8_lossy(&serialized),
        "{
  \"x_value\": 0,
  \"y_value\": 0
}"

    )
}

ChronoMind - 超级快的向量搜索引擎

我很高兴地分享ChronoMind,这是一个尖端的向量相似度搜索引擎,通过本地时间支持重新定义了速度和智能(这两者的结合一直是我最近的重点)。以下是它值得关注的原因:

🚀 极速体验

  • 84.93纳秒搜索延迟——比传统的FAISS和Milvus等解决方案快10-100倍。
  • 完全并发、无锁架构,能够支持超过1000万次每秒的查询。

时间智能

  • 首个支持本地时间衰减和重要性加权的向量存储,开启了实时推荐、时间敏感分析等新用例。

💡 关键特点

  • 零复制操作:直接内存访问,极致高效。
  • 上下文感知搜索:具有时间和上下文偏差的超快查询。
  • 内存高效:每个向量仅需3KB,包括元数据。

性能亮点

指标ChronoMindFAISSMilvusQdrant
搜索延迟84.93 纳秒~500 纳秒~800 纳秒~950 纳秒
最大每秒查询次数1000万10万-100万10万-100万~50万
时间支持

为什么重要

ChronoMind不仅更快——它还具有前瞻性(至少目前是),将先进的时间智能与Rust的无与伦比的性能相结合。不管你是在构建实时应用,还是处理海量数据集,这个引擎都可以改变你处理向量搜索的方式。

  • GitHub:https://github.com/JtPerez-Acle/chrono-mind/tree/rust

我很期待听到你们的反馈和想法!欢迎在评论中讨论用例、基准测试或任何其他问题。

--

From 日报小组 Mike

社区学习交流平台订阅:

  • Rustcc论坛: 支持rss
  • 微信公众号:Rust语言中文社区


Rust语言中文社区
Rust官方及社区最新信息搜集、文章推送,教程学习,技巧分享,社区交流。信息来源是整个全球Rust社区。
 最新文章