ClouderaとMilvusによるリアルタイムデータのためのRAGパイプラインの構築

現在のビッグデータ時代において、企業は大量のデータを生成しており、その可能性を最大限に引き出すためには効率的な処理が必要である。そのため、大規模なデータ処理の実行、さまざまなクラウド環境への適応性、データガバナンスとセキュリティを維持しながらリアルタイムで意思決定を行う機能などが、データ管理プラットフォームに求められる本質的な機能の一部となっている。
先日開催されたZilliz主催のUnstructured Data Meetupでは、ClouderaのプリンシパルGen AIエンジニアであるChris Burnsが、エンドツーエンドのデータライフサイクルを管理するエンタープライズデータクラウドプラットフォームであるClouderaが、効率的なRAG(Retrieval Augmented Generation)パイプラインを構築するためにどのように利用できるかについて語った。彼は、大規模言語モデル(LLM)アプリケーションにおけるRAGの重要性、直面する可能性のある課題、より良いデータを生成するためにMilvusを使用してRAGパイプラインを構築する手順について議論しました。
このブログでは、RAGパイプラインの主要な機能のいくつかを効果的に実装するために、ClouderaをMilvusとどのように統合できるかを探ります。詳細については、YouTubeの講演のフルリプレイをご覧ください。
Clouderaの概要Clouderaは、データの取り込み、保存から分析に至るまで、データのライフサイクル全体をサポートする包括的なエンタープライズデータプラットフォームです。あらゆるデータセンターまたはクラウドプラットフォームにおいて、迅速な導入と、コストとリスクを低減したAIを大規模に構築する能力を提供します。リアルタイムストリーミング、データエンジニアリング、マルチ温度ストレージ、マルチモーダルデータへの適応性などの機能を備えたClouderaは、企業向けの柔軟なGen AIアプリケーションを構築するための優れたプラットフォームです。
リアルタイムデータによるRAGパイプラインの構築
Retrieval Augmented Generation(RAG)は、データベースなどの外部ソースから情報にアクセスすることで、LLMのパフォーマンスを向上させる技術である。この追加情報(レイク)により、LLMは、LLMの学習データでは利用できなかった特定のドメイン知識に基づいた、より文脈に関連した正確な応答を生成する。これは、LLMを毎回再トレーニングすることなく、特定のユースケースに対応させる効率的な手法である。課題は、リアルタイムのデータ取り込み、処理、検索の複雑さを扱いながら、高い精度と低レイテンシーとコストを維持できるパイプラインを構築することにある。そこでClouderaの堅牢なインフラと、プライベートAIとリアルタイム検索をサポートするMilvusのようなツールが活躍する。
RAGパイプラインのワークフローを見る前に、まず理論的な概念を理解しよう。
RAGパイプラインを構築するには?
RAGパイプラインの構築には、基本的な理論の理解から高度な設定の実装まで、いくつかのステップが必要です。それを分解してみよう:
RAG - 101 - 一般的な課題と基本設定
クリスは、ほとんどのLLMが苦しんでいる幻覚という一般的な課題について話し始める。しかし、ここでは、彼はそれを "confabulation "と "fabrication "と言い換えた。Confabulationとは、LLMが不足している情報を、もっともらしく聞こえるが正しくない情報で補うことであり、Fabricationとは、架空の文章を作り出すことである。これらの問題に対処するために、クリスは、マルチホップ機械推論を実行し、データやオブジェクトの流れを追跡するためのトレーサビリティを維持することに加えて、クエリを文脈的に理解することが非常に重要であると述べている。
課題について話したところで、RAGシステムの基本的なセットアップを理解しよう。RAGパイプラインは2つの主要コンポーネントから構成される:
1.1. レトリーバー:このコンポーネントは、クエリに基づいて関連情報を見つけるために大規模なデータセット(例えば、ベクトルデータベース)を検索する。
2.ジェネレーター:このコンポーネントは、検索された情報を使用して、首尾一貫した、文脈的に正確な応答を生成する。
リトリーバーとジェネレーターは、複雑なクエリを扱う場合でも、システムが正確で適切な回答を提供できるように連携して動作する。しかし、クリスが指摘するように、MLプロジェクトを成功させるには、優れたデータだけでなく、分野の専門知識も必要だ。データは関連性があり一貫性がなければならず、ドメインの知識は関連性を確保するために不可欠である。
RAG - 201 - 統計分析とハイブリッド推論
統計分析** - RAGパイプラインのパフォーマンスを向上させるために、統計分析を行うことで、LLMの応答品質をよりよく理解することができる。
Gen AIの文脈で混同行列を使用することで、検索成功率を定量的に理解することができるかもしれない。
LLMの回答を擬人化することで、回答が不明な場合に偽の発言をするのではなく、回答を否定することで、回答に人間味を加えることができるかもしれない。
- ハイブリッド推論** - ハイブリッド推論は、企業が予算制約の中でパフォーマンスとセキュリティのバランスをとるための素晴らしい技術である。あらかじめ定義されたルールと機械学習モデルを組み合わせて、エッジケースを処理し、回答品質を向上させる。 ここでの目的は、異なるプラットフォームで結果を再現できるようにすることであり、したがって、機敏で拡張性があり、リアルタイムに適したアーキテクチャに焦点を当てるべきである。
RAG - 301 - データ型に関する考察
ベクトル・データベースに効率的にデータを格納するためには、適切なパーティショニングとチャンキング戦略を考案することが不可欠である。パーティショニングとは、データをより小さく管理しやすい単位に分割することで、チャンキングとは、要素の内容に基づいてパーティションを束ねることです。その両方を決定するためには、データ型を知ることが重要である。
チャンキング戦略の種類](https://assets.zilliz.com/Types_of_Chunking_Strategies_61807a2262.png)
チャンキング戦略の種類
小説、技術文書、電子メールなどの形式のデータは、密なデータ、すなわちヌル値がほとんどないデータに分類される。一方、センサーデータ、カテゴリーデータ、グラフデータなどはヌル値が多いため、スパースデータと呼ばれる。
密なデータと疎なデータの例](https://assets.zilliz.com/An_example_of_dense_and_sparse_data_d00cedb8de.png)
密なデータと疎なデータの例
RAGパイプラインで使用されるデータの種類は、その性能と精度に大きな影響を与える可能性がある。テキスト、画像、音声など、データの種類が異なれば、必要な処理や検索技術も異なります。使用されるデータの種類とその効果的な処理方法を理解することは、成功するRAGパイプラインを構築する上で非常に重要です。
RAG - 401 - Milvus Vector DBの構成
Milvus はオープンソースのベクトルデータベースで、高次元のベクトル埋め込みデータを効率的に保存、インデックス付け、検索できるように設計されています。類似検索に最適化されており、推薦システム、画像検索アプリケーション、RAGパイプラインに最適です。Milvusは大規模なデータセットをサポートし、拡張性に優れているため、エンタープライズアプリケーションに適しています。Milvusの以下の機能はRAGパイプラインに特に有用です。
- ハイブリッド検索** - Milvusはハイブリッド検索(マルチベクトル検索)をサポートしており、同一データセット内の複数のベクトルフィールドに対して同時にクエリを実行し、結果を再ランキング戦略で統合します。これにより、個々のベクターが異なるエンベッディングモデルやデータ処理技術、その他のカスタム操作を柔軟に使用することができます。
Milvusによるハイブリッド検索](https://assets.zilliz.com/Hybrid_search_with_Milvus_4e6d5cc21f.png)
Milvusによるハイブリッド検索
- マルチトリップクエリ** - Milvusはハイブリッド検索で使用される異なる検索方法間のトレードオフのバランスを取ることができる複雑なクエリのための高度な検索技術をサポートしています。マルチトリップクエリにより、クエリを複数のステップで繰り返し処理し、検索結果を向上させることができます。クエリの最初の実行後、リランキング(優先順位による結果の並べ替え)、クエリ拡張(特定の属性での拡張)、またはフィルタリングに基づいて、さらにクエリを実行することができます。
Milvusによるマルチトリップクエリ](https://assets.zilliz.com/Multi_trip_querying_with_Milvus_a323627445.png)
Milvusによるマルチトリップクエリー
最後に、Milvusはゲートキーパーの使用をサポートしています。ゲートキーパーとは、ジェネレータに渡す前に関連する情報のみが検索されるように検索プロセスに適用できるフィルターです。これは、リアルタイムRAGパイプラインにおいて特に有用であり、データ量が非常に大きくなる可能性があり、無関係な情報を迅速にフィルタリングすることが重要である。
RAG パイプラインにおける Milvus と Cloudera の統合
Clouderaは、Apache NiFi 2.0(フローベースのプログラミングに基づくデータフローシステム)を利用したRAG用のワークフローを提供しています。ワークフローはMilvusを含む様々なデータストア、モデル、ベクトルデータベースをサポートしている。そのいくつかを簡単に見てみよう。
- S3 to Milvus - RAGの最初のステップは、ソースからデータを収集し、それを前処理し、エンベッディングに変換し、ベクトルデータベースに格納することである。
データからVectorDBへのワークフロー](https://assets.zilliz.com/Data_to_Vector_DB_workflow_f8df9cf558.png)
データからVectorDBへのワークフロー
例えば、このClouderaワークフローは、S3からpdfドキュメントを取得し、huggingfaceモデルを使用してベクトル化し、結果をMilvusに書き込む。パーティショニングやチャンキングなどのデータ処理ステップはすべて、関連するコネクタをドラッグ、ドロップ、実行するだけで実行できます。
ClouderaによるS3からMilvusへのワークフロー](https://assets.zilliz.com/S3_to_Milvus_workflow_by_Cloudera_21c88ef5af.png)
ClouderaによるS3からMilvusへのワークフロー
- RAG Query Milvus** - RAGの第二ステップは、クエリを入力とし、埋め込みデータに変換した後、ベクトルデータベースに既に格納されている埋め込みデータとの類似性検索を行う。埋め込みがクエリの埋め込みに最も近いデータがフェッチされます。この情報は、LLMがレスポンスを生成するための追加コンテキストとして機能する。ClouderaはMilvus for RAGをクエリするためのワークフローを用意している。
ClouderaによるRAGクエリMilvusワークフロー](https://assets.zilliz.com/RAG_Query_Milvus_workflow_by_Cloudera_2351cbdaa6.png)
ClouderaによるRAGクエリMilvusワークフロー
結論
本ブログでは、Chris Burns氏がUnstructured Data Meetupで行った講演に基づき、ClouderaでリアルタイムRAGパイプラインを構築する方法についてお話しました。ビジネスが日々大規模化し進化する中、膨大な情報から効率的に価値を引き出すための高度なソリューションが必要となっています。Clouderaのようなデータライフサイクル管理プラットフォームを通じて、最小限の労力で簡単にAIアプリケーションを開発することができます。さらに、MilvusとClouderaを統合することで、RAGパイプラインを構築するための堅牢なフレームワークが提供されます。
Chris氏はまず、コンファブレーションやファブリケーションといったLLMが直面する一般的な課題とその対処法について話した。さらに、RAGパイプラインのパフォーマンスを向上させるために、統計解析とハイブリッド推論を行うことの重要性を強調した。Milvusは、ハイブリッド推論、マルチトリップクエリ、ゲートキーパーをサポートし、セキュリティを維持しながら、正確でコンテキストを考慮した応答を保証するため、RAGのユースケースに最適なベクトルデータベースである。
読み続けて

Legal Document Analysis: Harnessing Zilliz Cloud's Semantic Search and RAG for Legal Insights
Zilliz Cloud transforms legal document analysis with AI-driven Semantic Search and Retrieval-Augmented Generation (RAG). By combining keyword and vector search, it enables faster, more accurate contract analysis, case law research, and regulatory tracking.

Introducing DeepSearcher: A Local Open Source Deep Research
In contrast to OpenAI’s Deep Research, this example ran locally, using only open-source models and tools like Milvus and LangChain.

Building a RAG Application with Milvus and Databricks DBRX
In this tutorial, we will explore how to build a robust RAG application by combining the capabilities of Milvus, a scalable vector database optimized for similarity search, and DBRX.