コンテンツへスキップ

RAG

濃紺の星空で電球と太陽光パネルが金色の光の糸で結ばれる意味検索のイメージ

「電気代」で探して「再エネの買取制度」が出る検索を、月額ゼロで ― コミュロビの意味検索開発記

外部のAIサービスに1円も払わずに動いている意味検索を、自社サービス「コミュロビ」の実例で紹介。一語の検索に弱いモデルを捨てた理由、点数の「崖」で切る判定、ライブラリ755MB→60MB・読み込み12.2秒→0.73秒に軽くした方法と、社内検索にAIを入れる前に決めることをまとめました。

オフィスでノートPCを使う会社員と、ガラス壁の向こうのサーバーラックを金色の光の線が結び、窓の外には線が伸びていない図

社内RAGを「どこまで閉じるか」——ネット接続あり・社内ネットワーク完結・PC1台完結

社内RAGの相談で最初に確認するのは「社内の文書を外に送っていいか」です。ここの答えで選べる構成が変わり、しかもあとから変えるのがとても高くつきます。ネット接続あり/社内ネットワーク完結/PC1台完結の3段階で、それぞれ何ができて何ができなくなるかを整理しました。

濃紺の背景にデータベースの円筒シンボルがあり、周囲に金色の点と線でベクトルのクラスターを表した図

Django × pgvector でRAGを自前構築する

専用のベクトルDBを契約せず、すでに動いているPostgreSQLにpgvectorを入れてRAGを組む構成。次元数が後から変えられない理由、e5系のプレフィックス、HNSWとIVFFlatの選び分け、しきい値をギャップで切る方法、そして最も重い「埋め込みモデルを差し替える日」の入れ替え手順まで、Djangoの実コードで解説します。

左から流れてくる書類が中央の格子状フィルターで絞られ、一部だけが右へ通過する図

社内RAGで「他部署の資料が見えてしまう」問題の解き方

ベクトル検索は「意味が近いか」しか見ていないため、閲覧権限のない文書も平気で返してきます。社内RAGが本番直前に必ずぶつかるこの壁を、Django+pgvectorの事前フィルタでどう塞ぐか。後フィルタが破綻する理由、絞り込むと件数が足りなくなるHNSWの罠、そして実装後も残る3つの漏洩経路まで書きます。