0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Knowledge Base RAGアプリケーションの技術解説

Posted at

概要

このサンプルコードは、Streamlitを使ったRAG(Retrieval Augmented Generation)アプリケーションの実装例です。RAGとは、LLMの回答生成を外部知識で拡張する手法で、より正確で信頼性の高い回答を得るために活用されています。

アーキテクチャ

![RAGの概念図]

  1. ユーザーからの入力

    • Streamlit UIから質問を受付
    • 使用するLLMモデル(Claude 3 SonnetまたはHaiku)を選択
  2. 知識検索(Retrieval)

    • Amazon Knowledge Basesから関連ドキュメントを検索
    • ハイブリッド検索(ベクトル + キーワード)で上位30件を取得
  3. コンテキスト拡張プロンプト生成(Augmentation)

    • 検索結果を「context」としてプロンプトに挿入
    • 検索結果がない場合の回答方法も指定
  4. 回答生成(Generation)

    • Amazon Bedrockを通じてClaude 3モデルに問い合わせ
    • 検索結果を参考にした回答を生成

主要コンポーネント

1. UI層 (Streamlit)

st.title("Knowledge base RAGアプリケーションサンプル")
use_model = st.selectbox("使用するモデルを選択してください",("Sonnet","Haiku"))
user_input = st.text_input("質問")
send_button = st.button("送信")

2. レトリーバー (Amazon Knowledge Bases)

retriever = AmazonKnowledgeBasesRetriever(
    knowledge_base_id="XXXXXXXXXX",
    retrieval_config={
        "vectorSearchConfiguration": {
            "numberOfResults": 30, 
            "overrideSearchType": "HYBRID"
        }
    }
)

3. LLM (Claude 3 via Amazon Bedrock)

LLM = ChatBedrock(model_id=modelId, model_kwargs={"temperature": 0, "max_tokens": 4000})

4. RAGチェーン (LangChain)

chain = {"context": retriever, "question": RunnablePassthrough()} | prompt | LLM | StrOutputParser()

技術的ポイント

  1. ハイブリッド検索

    • ベクトル検索(意味的類似性)とキーワード検索(構文的一致)を組み合わせて検索精度を向上
  2. プロンプトエンジニアリング

    • システムプロンプトで明確な指示を与え、知識ベースの情報と一般知識を区別
  3. パラメータチューニング

    • temperature=0で決定論的な回答を生成(再現性向上)
    • 最大トークン数や検索結果数の適切な設定
  4. LangChainパイプライン

    • 複数のコンポーネントを統合したシンプルなデータフロー
    • | 演算子を使用した直感的なチェーン構築

拡張ポイント

  • 検索結果のフィルタリングやリランキング
  • 回答品質の評価メカニズム
  • ユーザーフィードバックの取り込み
  • 多言語対応
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?