プロジェクト

全般

プロフィール

機能 #256

未完了

RAG AIアドバイザー - Phase 1 デバッグ: tiktoken Uint8Array 問題

Redmine Admin さんが3日前に追加. 3日前に更新.

ステータス:
解決
優先度:
高め
担当者:
-
開始日:
2025-06-05
期日:
進捗率:

0%

予定工数:

説明

問題概要

task2.call2arm.com のRAG AIアドバイザー開発において、Phase 1の埋め込み生成段階で重要な問題が発生しています。

技術的問題

エラー: ValidationError [SequelizeValidationError]: string violation: content cannot be an array or an object

根本原因: OpenAIServiceのsplitTextIntoChunksメソッドがUint8Arrayを返しており、Sequelize Documentモデルが文字列を期待しているためにバリデーションエラーが発生。

現在の状況

  • ✅ OpenAI API統合は正常動作(単一埋め込み生成テスト成功)
  • ✅ PostgreSQL + pgvector データベース接続正常
  • ✅ Sequelize ORM設定完了
  • ❌ ドキュメント処理API(/api/embeddings/process-document)でエラー発生

技術的詳細

tiktoken ライブラリの問題

// 現在の問題のあるコード
const chunkText = this.encoding.decode(chunkTokens); // Uint8Arrayを返す
chunks.push(chunkText); // Sequelizeがstring期待だがUint8Array受信

// 必要な修正
const decodedBytes = this.encoding.decode(chunkTokens);
const chunkText = new TextDecoder().decode(decodedBytes);
chunks.push(chunkText);

データベーススキーマ不整合の発見と修正

  • documentsテーブル: 正常
  • document_chunksテーブル: フィールド名不一致修正済み(chunk_index, token_count)
  • embeddingsテーブル: 別テーブル化(vector(1536)型使用)

実行済み修正

  1. Chunkモデル修正(snake_case対応)
  2. Embeddingモデル新規作成
  3. モデル関係性設定
  4. embeddingsController修正
  5. tiktoken decode問題修正試行

次回セッション時の作業計画

即座実行事項

# 1. ファイルキャッシュクリア+コンテナ完全再構築
docker stop task2-api && docker rm task2-api
docker rmi task2-service_task2-api
docker-compose build --no-cache task2-api
docker-compose up -d task2-api

# 2. tiktoken問題の完全解決
# ファイル直接編集でNode.jsキャッシュ回避

代替解決アプローチ

  1. シンプルな文字列分割: tiktokenを使わずに文字数ベースの分割に変更
  2. ライブラリ更新: tiktoken最新版への更新
  3. Buffer変換: Uint8ArrayからBufferを経由した文字列変換

成功基準

curl -X POST -k -H 'Host: task2.call2arm.com' -H 'Content-Type: application/json' \
  -d '{"text": "RAG AIアドバイザー Phase 1 完了テスト!", "title": "Phase 1 完了記念ドキュメント"}' \
  https://localhost/api/embeddings/process-document

期待レスポンス:

{
  "message": "ドキュメントの処理が完了しました",
  "document": {...},
  "chunks": [...],
  "processingTime": "...",
  "tokenCount": "..."
}

影響範囲

  • Phase 1 完了が遅延
  • Phase 2(ベクトル検索)開始に影響
  • 全体の6週間開発スケジュールに軽微な影響

環境情報

  • VPS: Ubuntu 24.04.2 @ 85.131.243.51
  • コンテナ: task2-api (Node.js 18-alpine)
  • データベース: PostgreSQL + pgvector
  • 開発環境: /var/docker/task2-service/

他の形式にエクスポート: Atom PDF