widememを作っています。LLMエージェント用のオープンソースのメモリ層です。SQLite + FAISS を用いて完全にローカルで動作し、クラウドもアカウントも不要です。Apache 2.0 ライセンス。
私が直面し続けていた問題: ベクターストアは常に何かを返してしまい、有用でない場合でも結果を返します。ユーザーの医者を尋ねると、最も近い一致はその人のランチの注文で、類似度は 0.3 です。LLM はその文脈を見て自信を持って医者の名前を作り上げてしまいます。
そこで、信頼度評価を追加しました。すべての検索は現在、HIGH、MODERATE、LOW、NONE のいずれかで返されます。さらに、3 つのモードから選択できます:
- **厳密**: 自信を持っている情報だけを返し、それ以外は「わかりません」と言います
- **役に立つ**(デフォルト): 通常は自信のある情報を返し、不確かな結果にはフラグを立てます
- **創造的**:「その情報は保存されていませんが、必要であれば推測します」
また、決して薄れないべき事実のための `mem.pin()` を追加しました(アレルギー、血液型、その他そのような情報)。そしてフラストレーション検知も追加しました。ユーザーが「もうこのことを言ったよ」と言うと、システムはより多くの検索を行い、その記憶を強化します。
取得モードも新たに用意しました: fast(安価、10 件)、balanced(デフォルト、25 件)、deep(正確さがコストより重要な場合、50 件)
引き続きローカル優先。外部サービスはゼロ。完全にオフラインのまま、Ollama + sentence-transformers と組み合わせて使用可能です。
GitHub: https://github.com/remete618/widemem-ai
インストール: `pip install widemem-ai`
信頼度の閾値についてのフィードバックをいただけると嬉しいです。sentence-transformers や text-embedding-3-small とはうまく機能しますが、世の中のすべてのモデルを試したわけではありません。設定で閾値が合わない場合は教えてください。
[リンク] [コメント]