Skip to content

RAGナレッジパイプライン&ベクトル連携

SyncCrawlは、収集したWebデータを整理して生成AIアプリケーションで活用できるRAG(Retrieval-Augmented Generation)ナレッジベースへと変換します。


ナレッジ変換パイプライン構成


主要な処理ステップ

1. ノイズ除去と構造化 (Boilerplate Stripping)

Webページにはヘッダー、フッター、広告、著作権表記など検索精度に不要な要素が含まれる場合があります。

  • 本文抽出アルゴリズム: テキスト密度とタグパターンを分析し、コンテンツ本文を抽出します。
  • メタデータ保持: URL、収集日時、タイトル、カテゴリをチャンクのメタデータとして保持し、引用元(Citation)を提供します。

2. 文脈を保持するセマンティック・チャンキング

  • 構造認識分割: 見出しタグ(<h1><h6>)、段落(<p>)、リスト、テーブル(<table>)の境界を考慮して分割します。
  • オーバーラップ設定: チャンク間に適正なオーバーラップ(100〜200トークン)を設けて意味の断絶を防ぎます。

3. 埋め込みモデルのサポート

LangChain4jの標準インターフェースにより、各種埋め込みモデルを柔軟に選択可能です。

モデル区分推奨モデル特徴と適合環境
閉域網(オンプレミス)BGE-M3, KoSimCSE, Snowflake-Arctic外部通信を行わないオンプレミス環境、日本語検索
商用クラウドAPIOpenAI text-embedding-3-large, Cohere v3グローバルな多言語RAG環境
軽量CPU環境all-MiniLM-L6-v2, ONNX Runtimeリソース制約のあるエッジ環境

サポートするベクトルデータベース (Vector DB)

java
// LangChain4j Vector DB 接続設定例 (Spring Boot Bean)
@Bean
public EmbeddingStore<TextSegment> embeddingStore(PgVectorProperties properties) {
    return PgVectorEmbeddingStore.builder()
            .host(properties.getHost())
            .port(properties.getPort())
            .database(properties.getDatabase())
            .user(properties.getUsername())
            .password(properties.getPassword())
            .table("synccrawl_knowledge_vectors")
            .dimension(1024) // BGE-M3基準
            .build();
}
  • PostgreSQL (pgvector): 専用DBを追加せず、既存のRDBMS環境でリレーショナルデータとベクトルを管理
  • Milvus / Qdrant: 大規模ベクトルデータの分散処理と高速検索をサポート
  • Elasticsearch / OpenSearch: BM25キーワード検索とベクトルDense Retrievalを組み合わせたハイブリッド検索に対応

同期とライフサイクル管理

  • 差分更新(Incremental Sync): ページ内容に変更があった場合のみベクトルを再計算して更新します。
  • TTLによる自動有効期限管理: 期限切れの情報は設定周期に従って自動整理可能です。
  • ドメイン信頼度スコアリング: 公式サイトと一般サイトで重み付けを変え、検索時の優先順位を制御します。

Last updated: