sakamttyの日記

天文、宇宙、子育て、コスメ、本・絵本について書いてます。

ex

 

Gemini と Vertex AI を使って RAG を構築している場合、新しいドキュメントが引き当てられない問題を解決するためには、Google Cloud の検索機能や Embedding モデルの調整が重要になります。以下のアプローチを試してください。


1. Vertex AI Search (旧: Enterprise Search) の利用

Gemini API で新しい情報を適切に引き当てるには、Google Cloud の Vertex AI Search を活用すると精度が向上する可能性があります。

対応策

  • Vertex AI Search にインデックスを作成し、新しいドキュメントを含めた検索結果を取得できるか確認。
  • vector searchtext search (BM25) を組み合わせ、新しい情報にスコアブーストをかける
  • 検索クエリに filter を追加して、最近追加・更新されたデータを優先。

2. 埋め込みモデルの最適化

現在の Vertex AI の埋め込み (Embedding) モデルが新しい情報を適切に特徴量化できていない可能性があります。

対応策

  1. 最新の Vertex AI Embedding モデル (textembedding-gecko など) を使用
    • textembedding-gecko-multilingual など、最適なモデルを選択。
  2. Embedding のリフレッシュ
    • 新しいデータを定期的に再埋め込みして、最新の情報が反映されるようにする。
  3. 類似度の閾値 (similarity threshold) を調整
    • similarity scoreしきい値を調整することで、新しい情報をより取得しやすくする。

3. 検索アルゴリズムの調整

現在の検索方法が古い情報を優先的に引き当てる設定になっている可能性があります。

対応策

  • BM25 と Vector Search のハイブリッド検索
    • full_text_search (BM25) と vector_search を組み合わせて、新しい情報に対してスコアをブースト。
  • 時間的な重み付け (Temporal Re-ranking)
    • created_atupdated_at のフィールドを考慮し、新しいドキュメントにスコアボーナスを付与。
  • フィルタを追加
    • "updated_at > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)" などのフィルタを適用し、最新情報の優先度を上げる。

4. Gemini API のプロンプト最適化

Gemini の Retrieval 部分で、検索クエリが適切に処理されているかを確認。

対応策

  • プロンプトに "最新の情報を優先的に取得する" という指示を明示的に記述。
  • "最新のデータを含めて検索し、過去のデータが不要なら省略する" などの追加指示を試す。
  • Google Cloud の function calling 機能を活用して、Vertex AI Search との統合を強化。

5. Vertex AI Matching Engine の活用

Vertex AI の Matching Engine を使うと、スケーラブルなベクトル検索が可能になります。

対応策

  • 既存の検索に Matching Engine を組み込む
    • より高速でスケーラブルなベクトル検索が可能。
  • Hybrid Search を試す
    • BM25 + Vector Search + Matching Engine の組み合わせを導入し、検索精度を向上。

6. データのインデックス更新

現在のインデックスが古いデータで固定されている可能性があるため、新しいデータの追加を確実に行う。

対応策

  • Google Cloud Storage (GCS) + Vertex AI を利用し、新しいドキュメントの更新をリアルタイムでインデックスする。
  • Cloud FunctionsCloud Scheduler を活用し、定期的にデータをインデックスに反映
  • "cron job" を使って GCS → Vertex AI Index への更新を自動化。

まとめ

📌 最優先で試すべきこと

  1. Vertex AI Search を有効活用して、新しい情報を優先的に取得
  2. 埋め込みモデル (textembedding-gecko) の更新と最適化
  3. BM25 + Vector Search のハイブリッド検索を導入
  4. Gemini API のプロンプトを最適化し、最新情報を優先するよう指示
  5. Vertex AI Matching Engine を活用し、高精度な検索を実現
  6. Cloud Scheduler + Cloud Functions で定期的にデータ更新

現在の実装状況を詳しく教えてくれれば

AIピザの記事を読んだ工場の人事部長と部下の会話

AIピザの記事

www.itmedia.co.jp


部下
: 「部長、このピザハットのニュース、すごいですね。AIを使ってチーズの最適な量を決めたみたいです。」

人事部長: 「ああ、読んだよ。AIが味覚を数値化して分析するって、まさに未来の技術だ。こういうのが食品業界で広まるとは思わなかったな。」

部下: 「うちの工場でも、こういったAIの導入で何か改善できる部分があるんじゃないですか?例えば、社員の作業効率や安全管理の最適化とか。」

人事部長: 「確かに。AIを使えば、作業員の疲労度や安全リスクをリアルタイムで分析して、シフトや休憩の最適なタイミングを提案できるかもしれない。ピザハットがチーズの量を調整したように、うちも業務効率化に役立つだろうな。」

部下: 「特に製造工程の効率化が進めば、生産性も上がりますよね。人材不足の中、AIをうまく活用できれば、負担軽減につながりそうです。」

人事部長: 「そうだな。まずは、どの業務にAIを適用するのが効果的か調査してみよう。ピザハットの事例から学べることがたくさんありそうだ。」

AIピザの記事を読んだ物流会社の社長と専務の会話

物流会社の社長と専務の会話

www.itmedia.co.jp

社長: 「ピザハットがAIを使ってチーズの量を130%に増やすって話、聞いたか?AIで味覚を数値化して、最適な量を決めたらしい。」

専務: 「ええ、見ました。AIがここまで細かい調整までできるなんて、うちの物流業務にも応用できる部分があるんじゃないかと思いました。」

社長: 「そうだな。2024年問題でドライバー不足が深刻化する中、AIを使って配車や在庫管理の最適化ができれば、もっと効率よく回せるんじゃないか。ピザハットがチーズの量を調整したように、我々もAIで需要予測や配送ルートを最適化できれば、ドライバーの負担も軽減できるだろう。」

専務: 「確かに。AIがあれば、ドライバーの経験に頼らずに効率的なルートを見つけ出せるし、倉庫の在庫管理もリアルタイムで最適化できますね。特に繁忙期の負担が減りそうです。」

社長: 「まずは、物流業務にAIをどう導入するか検討してみよう。うちもピザハットのように、データに基づいて最適化を進めないと、この先の競争には勝てないだろう。」

専務: 「早速AIソリューションを導入できる業者を調べてみます。2024年問題を乗り切るには、今がそのタイミングですね。」

vba

Sub HTMLファイル内の文字列検索()
    Dim フォルダパス As String
    Dim 対象ファイル As String
    Dim ファイル内容 As String
    Dim ファイル番号 As Integer
    Dim 行番号 As Long
    
    ' フォルダパスを設定
    フォルダパス = "C:\Path\To\Your\Folder" ' 対象のフォルダのパスに置き換えてください
    
    ' フォルダ内のHTMLファイルを処理
    対象ファイル = Dir(フォルダパス & "\*.html")
    
    Do While 対象ファイル <> ""
        ' ファイルを開く
        ファイル番号 = FreeFile
        Open フォルダパス & "\" & 対象ファイル For Input As ファイル番号
        
        ' ファイル内容を一括で読み込む
        ファイル内容 = Input$(LOF(ファイル番号), ファイル番号)
        
        ' ファイルを閉じる
        Close ファイル番号
        
        ' "安全上のご注意" を検索
        行番号 = InStr(1, ファイル内容, "安全上のご注意")
        
        ' 発見した場合はメッセージを表示
        If 行番号 > 0 Then
            MsgBox "ファイル名: " & 対象ファイル & vbCrLf & "見つかった行番号: " & GetLineNum(ファイル内容, 行番号)
        End If
        
        ' 次のファイルを取得
        対象ファイル = Dir
    Loop
End Sub
 
Function GetLineNum(text As String, position As Long) As Long
    ' 指定位置が含まれる行番号を取得する関数
    Dim lines As Variant
    lines = Split(text, vbCrLf)
    Dim totalLength As Long
    Dim i As Long
    For i = LBound(lines) To UBound(lines)
        totalLength = totalLength + Len(lines(i)) + 2 ' 行末のCrLf分も含む
        If totalLength >= position Then
            GetLineNum = i + 1
            Exit Function
        End If
    Next i
End Function