このプロジェクトについて

Lexosは、セルフホストの言語モデルを中心に構築されたイベント駆動型AI文書処理エンジンです。高並行性のGoゲートウェイと非同期のPythonワーカーを組み合わせ、HTTPリクエスト処理をブロックしたり外部AI APIに依存したりせずに、文書要約、検索拡張生成(RAG)、音声文字起こしを実行します。 READMEに記載されている主な機能: セルフホストでプライバシー重視:文書解析、埋め込み、ベクトル検索、文字起こし、LLM推論はすべてセルフホストのDocker環境内で実行され、外部AI APIは不要です。 非同期処理:クライアントはタスク識別子とともに即座に202 Accepted応答を受け取り、CPU負荷の高い作業はバックグラウンドで継続されます。 リアルタイム回答ストリーミング:Server-Sent Eventsにより、生成された回答がPythonワーカーからRedis Pub/SubとGoゲートウェイを経由してブラウザへトークン単位でストリーミングされます。 S3互換オブジェクトストレージ:開発にはMinIO、本番にはCloudflare R2を使用し、同じS3互換クライアント設定を利用します。 コンテンツアドレス処理:SHA-256フィンガープリントがソースコンテンツ、操作、パラメータを組み合わせ、完了済みアーティファクトを再利用し、同時重複処理を抑制します。 多言語検索:多言語埋め込み、トークナイザー対応チャンキング、FAISSコサイン類似度検索により、対応言語間で関連証拠を取得します。 分離された自動テスト:Goハンドラーは依存性注入されたRedisとストレージインターフェースを使用し、PythonテストはPytestとpytest-mockでモデル、ストレージ、ネットワーク操作をモックします。 アーキテクチャ:Next.jsフロントエンドが文字起こし、要約、質問応答のワークフローを提供し、TanStack QueryのポーリングとSSEレンダリングを使用します。Go + Echoゲートウェイは、取り込み、検証、オブジェクトストレージへのストリーミングアップロード、タスクディスパッチ、重複抑制、SSEプロキシを処理します。Redisはブローカー、タスク状態ストア、処理キャッシュ、分散ロックレイヤーとして機能します。Pythonワーカーはキューをポーリングし、3つのパイプラインを実行します:Qwen3 0.6Bを使用したMap-Reduceパイプラインによる要約用のDistiller、FastEmbed埋め込みとFAISSインデックスを使用したRAG用のGleaner、Faster-Whisperによる音声文字起こし用のScriber。 デプロイ:約4 vCPUと8 GB RAMの小規模なCPU専用VPS向けに設計され、AIワーカーは約2 GBのメモリ予算です。量子化されたQ4_K_M GGUFモデル、メモリマップ読み込み、ONNXベースの埋め込み、ドキュメントごとのFAISS IndexFlatIPインデックス、シーケンシャルワーカー並行性、外部化された状態により、リソース使用量を予測可能に保ちます。 実行:DockerとDocker Composeが前提条件です。リポジトリをクローンし、docker-compose up --build -dを実行します。モデルファイルのダウンロードとキャッシュ中は、初期起動に数分かかる場合があります。本番ストレージは、R2エンドポイントとS3_REGION=autoを使用した同じS3設定サーフェスを使用し、ライフサイクルルールはWranglerで適用できます。生オブジェクトは1日後に期限切れ、キャッシュオブジェクトは8日後に期限切れとなり、Redisキャッシュメタデータは7日間再利用可能です。 テスト:GoゲートウェイテストはTestifyモックを使用してハンドラー動作、フィンガープリント、キャッシュヒット、古いロック回復、ストレージアクセスを検証します。Pythonテストはキャッシュ所有権、トークナイザー対応インデックス、ストリーミングクリーンアップ、ワーカールーティング、アーティファクト再利用、障害回復を検証します。フロントエンドCIはTypeScript型チェック、ESLint、本番Next.jsビルドを実行します。 ライセンス:MIT。