BBloomFjord
AIコーディングワークスペース

ブルームフィルターの確率的所属判定

最大1024バイトのキーを1から8192ビットのブルームフィルターに保存します。

● ● ●BloomFjord●
ワークフロー · ブルームフィルターの確率的所属判定 ×
from hashlib import sha256

class Bloom:
    def __init__(self, width):
        if type(width) is not int or not 1 <= width <= 8192:
            raise ValueError("width.range")
        self.width, self.bits = width, 0
    def positions(self, key):
        if not isinstance(key, bytes) or len(key) > 1024:
            raise ValueError("key.bytes")
        digest = sha256(key).digest()
        return [int.from_bytes(digest[i:i+4], "big") % self.width
                for i in (0, 4, 8, 12)]
    def add(self, key):
        for position in self.positions(key):
            self.bits |= 1 << position
    def maybe_contains(self, key):
        return all(self.bits & (1 << p) for p in self.positions(key))
✳最大1024バイトのキーを1から8192ビットのブルームフィルターに保存します。
✓ 変更内容適用前に確認 ↗
ワークスペースのイメージ
プロジェクト
重複挿入と挿入済みキーを確認し、陽性結果が偽の場合もあり所属の証明ではないことを示します。
適用前に確認
実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。
モデル
OpenAI互換またはAnthropicのエンドポイントを、ベースURLと必要なAPIキーで設定し、接続をテストします。ローカルのモデルサーバーは起動が必要です。リモートツールは別途データを送信する場合があります。
ワークフロー

ブルームフィルターの確率的所属判定

ワークフロー ↗
ワークフロー
from hashlib import sha256

class Bloom:
    def __init__(self, width):
        if type(width) is not int or not 1 <= width <= 8192:
            raise ValueError("width.range")
        self.width, self.bits = width, 0
    def positions(self, key):
        if not isinstance(key, bytes) or len(key) > 1024:
            raise ValueError("key.bytes")
        digest = sha256(key).digest()
        return [int.from_bytes(digest[i:i+4], "big") % self.width
                for i in (0, 4, 8, 12)]
    def add(self, key):
        for position in self.positions(key):
            self.bits |= 1 << position
    def maybe_contains(self, key):
        return all(self.bits & (1 << p) for p in self.positions(key))
AIコーディングワークスペース

不確実な結果を確定した判断にしない

高速な予備検査でも、呼び出し側が答えを最終結果と扱うと不具合になります。BloomFjordは接続モデルとその境界をレビューするWindows向けAIコーディング環境です。データ構造と利用コードを会話に提示し、実行前にアプリが必要とする証拠を示してください。

具体例として、確定的な検索の前に使うブルームフィルターの所属判定を調べるよう依頼します。一致の可能性がある場合と、確実に存在しない場合に呼び出し側がどうすべきか説明します。曖昧な真偽値の横のコメントだけに頼らず、名前、分岐、テストで区別を保つ提案を求めてください。

制御したデータで統合をレビューします。挿入したキーと存在しないキーを含め、一致候補が必要な確認経路に進むか確かめます。幅やハッシュの変更を受け入れる前に、検証と設定の前提を調べてください。フィルターを厳密な所属の保証と扱わず、プロジェクトテストで必要な動作を確認します。

BloomFjordはOpenAI互換またはAnthropicのエンドポイント接続に対応します。プロバイダーが提供していれば拒否を抑制する調整を施したabliterated AIモデルを選べますが、コンテキスト、ツール対応、制限は構成によって決まります。環境で提案を検討・調査し、最終判断はアプリの契約に基づいて行います。

予備的な所属判定を統合する

一致の可能性がある場合はどうすべきですか?

厳密な所属が必要ならアプリの確定的な確認経路に進みます。呼び出し側の分岐を示すよう依頼してください。確率的な結果を、確認の省略やレコードの確定扱いの許可に黙って変えてはいけません。

存在しないキーのテストで偽陽性がないと証明できますか?

いいえ。確認できるのはそのデータであり、すべてのキーではありません。テストは統合の動作を確認し、文書化した不確実性を維持するために使います。厳密な所属を提供するかのようなAPI名や呼び出し側の変更を避けてください。

キーの符号化もレビューする理由は何ですか?

挿入と検索で同じ論理キーを一貫して表現する必要があります。アプリの値をバイト列に変えるコードも含め、所属判定の実装を変える前に正規化やシリアライズの違いを調べてください。

呼び出し側の修正中にフィルター幅を変えるべきですか?

報告された問題に必要でない限り、設定変更は別にします。動作と資源使用量を変える可能性があります。付随的な改善として新しい幅を受け入れず、説明と適切な検証を求めてください。

Windows版をダウンロード ↗

BloomFjord · 更新日 2026-10-25