Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

Redis を使用した AI エージェント用の超高速インメモリ ファイルシステムの設計

Codex や Claude Code のような AI エージェントは、 当然のことながらbash コマンドの実行が非常に得意です。 。ファイルシステムを検索し、grep し、シェルを介してコンテキストを取得します。

そこで私は試してみたいと思いました。AI エージェントが動作するファイルシステム全体がディスク上ではなく Redis 上に存在したらどうなるでしょうか? AI エージェントからは他のファイルシステムを使用しているように見えても、実際には非常に高速なインメモリ ストアである場合はどうなるでしょうか?

私が望んでいた方法は次のとおりです 👇

Redis を使用した AI エージェント用の超高速インメモリ ファイルシステムの設計

エージェントが grep コマンドを実行すると (これはすべて例外的です)、Vercel の just-bash を使用してコマンドをインターセプトします。 ライブラリを作成し、それを Redis 検索クエリに変換します。

そうすれば、読み取り専用アクセスのためのサンドボックスは必要なくなり、 (理論上は)はるかに高速になるはずです。 。そして、Mintlify がすでにこれと同様のことを行っていることが判明しました。

アイデア

これが機能するかどうかを確認するために、ロジックを 3 つの部分に分割しました。

<オル>
  • 各ファイルは Redis JSON ドキュメントです 。パス、コンテンツ、サイズ、タイムスタンプをすべて 1 つのキーにまとめて保存します。
  • マニフェストはディレクトリ ツリーを追跡する 。 1 つの Redis キーはフォルダー構造全体を保持するため、lstree スキャンする必要はありません。
  • grep 用の Redis 検索 。このように grep 一致するものを見つけるためにすべてのファイルを読み取る必要はありません。
  • それで終わりです!これらのごく少数のことを適切に行うことで、通常の (読み取り専用) ファイルシステムと完全に同等に非常に近い速度で実現できます。現時点では書き込みを実装しないことにしました。

    最大の課題:grep

    cat のようなコマンド または ls 非常に簡単です。単一のファイルを完全に読み取るか、ディレクトリ構造をリストします。どちらも Redis を使用すると簡単に実行できます。 sed -n '1,240p' のようなコマンド は少し複雑ですが、ソート セットを使用すれば確実に機能させることができます。

    グレッピングは少し異なります。通常の grep -R "oauth" /workspace そのディレクトリの下にあるすべてのファイルを読み取る必要があります。仮想ファイルシステムでは、単語が含まれているかどうかを確認するためだけに Redis からすべてのドキュメントを取得することを意味します。それは本当に遅くて高価です。

    しかし、私たちは最近、Redis データを検索するための Rust ベースの非常に高速かつ効率的な方法である Upstash Redis Search を導入しました。 Redis Search を使用すると、grep を傍受できます。 実行前にクエリに変換すると、ファイルをフェッチせずに高速に結果が得られます。

    検索クエリは次のようになります。

    import { Redis } from "@upstash/redis";
     
    const redis = new Redis.fromEnv();
    const index = redis.search.index({ name: "vfs" });
     
    const matches = await index.query({
     filter: {
     $must: [
     { workspaceId: "demo" },
     { kind: "file" },
     { content: { $phrase: "oauth" } },
     ],
     },
     select: { path: true },
    });

    エージェントには、通常のシェルからの出力と同じ出力が表示されます。

    エージェントにシェルを与える

    最後の部分は、これを just-bash に接続することです。 そのため、エージェントはそれに対してコマンドを実行できます。 Mintlify がアシスタントのファイルシステムを構築した方法にヒントを得て、Redis をサポートする fs アダプターを /workspace にマウントします。 MountableFs で :

    import { InMemoryFs, MountableFs } from "just-bash";
     
    const mountableFs = new MountableFs({ base: new InMemoryFs() });
    mountableFs.mount("/workspace", redisFs); // redisFs talks to Upstash
     
    const bash = new Bash({ fs: mountableFs, cwd: "/workspace" });

    エージェントが cat /workspace/src/index.ts を実行するとき 、readFile 呼び出しは Redis に直接送信されます。 grep インターセプトされ、Redis Search にリダイレクトされます。

    エージェントの観点からは、それは単なるシェルです。 lscatgrepfind 、すべて機能します。それを bash として Vercel AI SDK に入れると、 ツールを使用すると、Redis 内に完全に存在するコードベースを探索できるエージェントがあります。

    このアイデアを思いついた経緯

    その 1 つは、上でリンクした Mintlify の素晴らしい記事です。次に、ほとんどのエージェント サンドボックスは重いです。エージェントが 1 つのファイルにアクセスするか、1,000 のファイルにアクセスするかに関係なく、コンテナを起動し、ディスクをマウントし、そのすべてのコストを支払います。

    Redis を使用した仮想ファイルシステムは常に稼働しており、グローバルにレプリケートされ、耐久性があり、最もコストのかかる操作 (ファイル全体の検索) は Redis Search が得意とする操作です。

    乾杯 🙌ジョシュ


    1. Next.jsでMetamaskを使用するDAppの優先ストレージ

      DAOやDAPPなどのWeb3アプリケーションはますます人気が高まっています。 Web3の前提により、これらのプラットフォームは、ユーザーのIDを他のユーザーにプライベートに保ち、さらには自分自身に知られないようにしながら、ユーザーにより個人的でカスタマイズされたエクスペリエンスを提供することになっています。 このプロジェクトでは、このような場合のユーザーエクスペリエンスを向上させる方法を探ります。 ウォレットによる認証/IDチェック 多くのアプリケーションでは、ETHなどの暗号資産を管理するためにMetamaskのようなブロックチェーンウォレットが使用されます。このようなウォレットを使用

    2. DevOpsチームがRedisEnterpriseを愛する5つの理由

      多くの企業では、DevOpsチームがデジタルトランスフォーメーションの推進を主導しています。この旅は、多くの場合、デジタルエコノミーの可能性を解き放ち、クリックするだけで競争に立ち向かうように設計されたアプリケーションとインフラストラクチャの近代化の取り組みから始まります。わずか数秒のアプリケーションパフォーマンスの遅れは、顧客体験、そして最終的にはビジネスの成功に多大なダウンストリームの影響を与える可能性があります。たとえば、Gapアプリがすぐに読み込まれない場合や、数秒以内に在庫の更新が行われない場合、多くの買い物客は他の場所でカーキを購入することを躊躇しません。簡単に言えば、アプリケーシ