概要

LlamaCloudアドバンス機能は、LlamaIndex統合を使用した高度な検索・クエリ機能を提供します。これらのツールにより、インデックス化された知識ベースからの高度なドキュメント検索と回答生成が可能になります。

主要機能

  • LLAMA_CLOUD_QUERY_WITH_LLAMA_INDEX
    • LlamaIndexを使用した高度な検索でドキュメントクエリ
  • LLAMA_CLOUD_SEARCH
    • Llama Cloudインデックスを使用した検索と回答生成
  • LLAMA_CLOUD_SEARCH_WITH_LLAMA_INDEX
    • LlamaIndex統合によるエンハンス検索

認証

詳細については、こちらをクリックしてください。 これらのアドバンスLlamaCloudツールを使用するには以下が必要です:
  1. LlamaCloudからのLlamaCloud APIキー
  2. 適切に設定されたプロジェクトとインデックス
  3. 組織IDとプロジェクト設定
注意: APIキーは機密情報として扱い、パブリックリポジトリにコミットしないでください。

例:アドバンスドキュメントクエリシステム

- id: setup_query_parameters
  name: setup_query_parameters
  tool: INPUT_JSON
  input:
    - name: value
      value: {
        "queries": [
          "四半期報告書で言及されている主要なパフォーマンス指標は何ですか?",
          "同社の成長は業界ベンチマークとどのように比較されますか?",
          "特定された主要なリスク要因は何ですか?"
        ],
        "system_prompt": "あなたは金融アナリストです。提供されたコンテキストに基づいて、以下のクエリに包括的に回答してください:{query}",
        "search_config": {
          "similarity_top_k": 5,
          "index_name": "quarterly-reports-index",
          "project_name": "financial-analysis",
          "organization_id": "your-org-id"
        }
      }

- id: query_financial_data
  name: query_financial_data
  tool: LLAMA_CLOUD_QUERY_WITH_LLAMA_INDEX
  config:
    - name: api_key
      value: "{{secrets.LLAMA_CLOUD_API_KEY}}"
  input:
    - name: input
      value: "{{steps.setup_query_parameters.result.queries}}"
    - name: system_prompt
      value: "{{steps.setup_query_parameters.result.system_prompt}}"
    - name: name
      value: "{{steps.setup_query_parameters.result.search_config.index_name}}"
    - name: project_name
      value: "{{steps.setup_query_parameters.result.search_config.project_name}}"
    - name: organization_id
      value: "{{steps.setup_query_parameters.result.search_config.organization_id}}"
    - name: similarity_top_k
      value: "{{steps.setup_query_parameters.result.search_config.similarity_top_k}}"

- id: process_query_results
  name: process_query_results
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: script
      value: |
        import json
        
        # クエリ結果の処理
        query_results = {{steps.query_financial_data.result}}
        processed_results = []
        
        for i, result in enumerate(query_results):
            query = result[0] if len(result) > 0 else "不明なクエリ"
            answer = result[1] if len(result) > 1 else "回答が提供されませんでした"
            references = result[2:] if len(result) > 2 else []
            
            processed_results.append({
                "query_id": i + 1,
                "question": query,
                "answer": answer,
                "references": references,
                "reference_count": len(references)
            })
        
        # サマリーレポートの生成
        summary = {
            "total_queries": len(processed_results),
            "successful_queries": len([r for r in processed_results if r["answer"] != "回答が提供されませんでした"]),
            "total_references": sum(r["reference_count"] for r in processed_results),
            "detailed_results": processed_results
        }
        
        print(json.dumps(summary, indent=2, ensure_ascii=False))

例:マルチインデックス検索比較

- id: setup_search_comparison
  name: setup_search_comparison
  tool: INPUT_JSON_WITH_VALIDATION
  input:
    - name: value
      value: {
        "search_query": "人工知能のトレンドと市場見通し",
        "indexes": [
          {
            "name": "tech-reports-2024",
            "project": "technology-analysis",
            "description": "技術業界レポートと分析"
          },
          {
            "name": "market-research-ai",
            "project": "market-intelligence", 
            "description": "AI市場調査と予測"
          }
        ],
        "organization_id": "your-org-id"
      }

- id: search_tech_reports
  name: search_tech_reports
  tool: LLAMA_CLOUD_SEARCH
  config:
    - name: api_key
      value: "{{secrets.LLAMA_CLOUD_API_KEY}}"
  input:
    - name: input
      value: ["{{steps.setup_search_comparison.result.search_query}}"]
    - name: system_prompt
      value: "技術業界の観点から以下のクエリを分析してください:{query}"
    - name: name
      value: "{{steps.setup_search_comparison.result.indexes[0].name}}"
    - name: project_name
      value: "{{steps.setup_search_comparison.result.indexes[0].project}}"
    - name: organization_id
      value: "{{steps.setup_search_comparison.result.organization_id}}"
    - name: similarity_top_k
      value: 3

- id: synthesize_insights
  name: synthesize_insights
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4
  input:
    - name: prompt
      value: |
        {{steps.setup_search_comparison.result.search_query}}に関する複数の検索結果からインサイトを統合してください
        
        技術業界の観点:
        {{steps.search_tech_reports.result[0].answer}}
        
        以下を含む包括的な分析を作成してください:
        1. 共通テーマとトレンドの特定
        2. 各ソースからの独自のインサイトのハイライト
        3. 実用的な推奨事項の提供
        4. 矛盾や異なる観点の指摘
        5. さらなる調査が必要な分野の提案
        
        明確なセクションと箇条書きによるエグゼクティブサマリーとしてフォーマットしてください。

例:コンテキスト情報検索

- id: setup_contextual_search
  name: setup_contextual_search
  tool: INPUT_TEXT
  input:
    - name: value
      value: "ヘルスケアAIセクターでの新製品ローンチを計画しています。知っておくべき規制上の考慮事項、市場機会、技術的課題は何ですか?"

- id: extract_search_aspects
  name: extract_search_aspects
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4
  input:
    - name: prompt
      value: |
        このビジネスクエリを特定の検索側面に分解してください:
        "{{steps.setup_contextual_search.result}}"
        
        以下にカテゴライズして抽出してください:
        1. 規制側面(コンプライアンス、法的、規制)
        2. 市場側面(機会、競争、トレンド)
        3. 技術側面(課題、要件、機能)
        
        各側面について、関連情報を収集するのに役立つ具体的な検索クエリを2-3個生成してください。
        
        JSONとして返却:
        {
          "regulatory_queries": ["クエリ1", "クエリ2", "クエリ3"],
          "market_queries": ["クエリ1", "クエリ2", "クエリ3"], 
          "technical_queries": ["クエリ1", "クエリ2", "クエリ3"]
        }

- id: compile_comprehensive_report
  name: compile_comprehensive_report
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: script
      value: |
        import json
        
        # すべての検索結果を処理
        def process_results(results, category):
            processed = []
            for result in results:
                if len(result) >= 2:
                    processed.append({
                        "query": result[0],
                        "answer": result[1],
                        "references": result[2:] if len(result) > 2 else [],
                        "category": category
                    })
            return processed
        
        all_insights = []
        
        # 構造化レポートの生成
        report = {
            "executive_summary": {
                "total_insights": len(all_insights)
            },
            "action_items": [
                "規制コンプライアンス要件の確認",
                "市場ポジショニング戦略の分析",
                "技術実装の課題評価",
                "リスク軽減戦略の開発"
            ]
        }
        
        print(json.dumps(report, indent=2, ensure_ascii=False))

ヒントとベストプラクティス

  • クエリ最適化: より良い検索精度のために、具体的で構造化されたクエリを使用
  • インデックス管理: トピックやドメインごとに論理的なインデックスにドキュメントを整理
  • 類似性調整: クエリの複雑さに基づいてsimilarity_top_kを調整
  • システムプロンプト: 異なるタイプの分析に対して専門的なシステムプロンプトを作成
  • 結果処理: ダウンストリーム使用のために常に結果を処理・検証
  • 参照追跡: 透明性と検証のために参照情報を活用
  • バッチ処理: 効率性のために関連する複数クエリを一緒に処理
  • コンテキスト保持: 複数の検索操作間でコンテキストを維持
  • エラーハンドリング: API障害や空の結果に対する適切なエラーハンドリングを実装
  • コスト管理: APIの使用状況を監視し、コスト効率のためにクエリパターンを最適化