データの完全性を守る:LLMwareとMilvusによるオンプレムRAGの展開
Unstructured Data Meetup](https://zilliz.com/community/unstructured-data-meetup)の最新セッションでは、AI BlocksのCEOであるDarren Oberstをお招きすることができました。彼はカリフォルニア大学バークレー校で物理学と哲学の学位を取得し、現在は金融・法律サービス向けの[大規模言語モデル](LLM)アプリケーションの開発変革に注力している。今回のミートアップでダレンは、Retrieval Augmented Generation (RAG)を大規模な金融・法律サービス企業向けにオンプレミスで展開すべき理由について議論した。
このブログでは、Darrenの重要なポイントを要約するだけでなく、LLMwareとMilvusベクトルデータベースを使用してプライベートクラウド上でRAGを構築する実践的な例を提供します。この例は、あなたのプロジェクトにこの知識を適用するためのインスピレーションとモチベーションを与えるように設計されています。また、YouTubeでフルセッションをご覧になることをお勧めします。
RAG 導入の主な課題
大規模な言語モデルは一貫性がありません。正確な答えを出すこともあれば、無関係な情報を出すこともある。このような矛盾は、LLMが単語の意味を真に理解することなく、単語間の統計的関係を理解するために生じます。さらに、LLMは古く公開されているデータで事前にトレーニングされているため、プライベートなデータや最新の情報に特化した正確な回答を提供する能力が制限されます。
Retrieval Augmented Generation (RAG)は、LLMの回答をMilvusのようなベクトルデータベースに格納された外部の知識ソースで強化することにより、コンテンツの質を向上させ、この制限に対処するための一般的なテクニックです。RAGは卓越した技術であるが、その導入には課題がある。
講演の中でダレンは、多くの企業が直面する共通の課題を共有した。
1.データのプライバシーとセキュリティに関する懸念:多くの企業、特に金融や法律分野の企業は、プライバシーやセキュリティへの懸念からパブリック・クラウド・サービスの利用を躊躇している。また、既存のソリューションの多くは、オンプレミスではなくパブリック・クラウドに焦点を当てているため、データ・セキュリティとコンプライアンスを確保する必要がある企業にとっては課題となっている。
2.**コストの上昇パブリック・クラウドのインフラは、大規模なモデルを頻繁に使用するため、コストがかさむ可能性がある。インフラ、データ、アプリケーションの完全な制御と所有権を持たないまま、このような高額な費用を支払うことは、結果として損をすることになる。
3.検索戦略の軽視:しばしば見落とされる重要な側面の1つは、RAG展開における検索戦略の重要性である。AIチームはAI生成能力に焦点を当てがちだが、検索されたドキュメントの品質も同様に重要である。
オンプレRAGの展開
上述した課題は、RAGをプライベートクラウド上に展開するという一般的なソリューションで効果的に対処することができる。このアプローチでは、以下の方法で問題に対処する:
1.**1.データ・セキュリティの向上:機密性の高いビジネス文書、規制情報、その他の専有データは、コンプライアンスとセキュリティの基準を満たすために、プライベート・クラウドの安全な範囲内に保管する必要があります。すべてが非公開で行われていれば、情報漏えいは起こらない。
2)低コスト:プライベート・クラウド・インフラ上にAIモデルを展開することで、特に頻繁に利用する必要がある場合には、パブリック・クラウド・サービスよりも費用対効果の高いソリューションを提供できる。小規模なモデルを使用する場合、より大規模でリソース集約的なモデルよりも効率的に実用的な結果を達成できるため、コストはさらに低くなる。オープンソースのLLMとテクノロジーは、迅速なイノベーションとカスタマイズが可能なため、RAGに最適な選択肢です。
3.プライベート・クラウドにおける検索による生成の強化:より優れた検索エンジンは、生成スキルに制限のある小規模なモデルを補完することができる。より優れた検索システムを作ることによってのみ、文書解析、テキストチャンキング、セマンティッククエリなどのAIアプリケーションの精度と効率を大幅に向上させることができる。
要約すると、Darren氏は、データプライバシー、コスト、結果に関する懸念に対処するために、AI、特にLLMにプライベートクラウドソリューションを採用することを提唱している。次に、Huggingface TransformersライブラリのRAG用に設計・最適化されたDragonモデルについて説明する。
dRAGon (Delivering RAG On) Models🐉(RAGを実現する)モデル
ドラゴンは、AI Blocksによって発表された、RAG(Retrieval Augmented Generation)専用に設計された一連のモデルです。これは、契約書、規制文書、複雑な金融情報などの独自のデータセットで微調整された7つのオープンソースモデルのシリーズです。モデルには3つのカテゴリーがある:
モデルのクラスとその説明](https://assets.zilliz.com/Classes_of_models_and_their_description_5b603cd089.png)
モデルのクラスとその説明
1.ブリングモデル:*ラピッドプロトタイピング用に最適化されたコンパクトでインストラクションチューニングされたモデルで、CPU上で動作可能なため、初期テストや開発フェーズに最適です。
2)**Llama, Mistral, Red-pajama, Falcon, Deciのような60億、70億パラメータを持つ主要な基礎モデルの微調整版。事実ベースの質問回答や規制文書分析のようなタスク向けにカスタマイズされています。
3.インダストリー ****BERT**** モデル:* 業界特有のアプリケーションに特化したインダストリー BERT モデルは、契約分析などのタスクに合わせ て微調整された 文変換器 です。
さらに、これらのモデルは、常識的な RAG 構造ベンチマークを使用して厳密にベンチマークされている。MMLUやARC**のような科学的な指標に依存するオープンソースのモデルとは異なり、ドラゴンのモデルは実際の精度や実用的な使用例についてテストされています。このモデルのコレクションは、以下のようにHuggingFaceで利用可能です:
HuggingFaceでホストされているLLMwareモデル](https://assets.zilliz.com/LL_Mware_models_hosted_on_Hugging_Face_5c1d3cfc13.png)
HuggingFace](https://huggingface.co/llmware)でホストされているLLMwareモデル
これらのモデルを使う主な利点は以下の通りである:
精度の向上:**広範なデータセットでファインチューニングされたこれらのモデルは、文書解析、テキストチャンキング、セマンティッククエリにおいて高い精度を提供します。
コスト効率: **プライベートクラウドインフラストラクチャでの使用に最適化されたこれらのモデルは、パブリッククラウド上の大規模でリソース集約的なモデルと比較して、コスト効率の高いソリューションを提供します。
オープンソースでカスタマイズ可能:** Hugging Face上で利用可能なこれらのオープンソースモデルは、企業の特定のニーズを満たすための迅速なイノベーションとカスタマイズを可能にします。
プロダクション・グレードのパフォーマンス:** 信頼性のためにベンチマークされたこれらのモデルは、様々なワークフローにわたって一貫した信頼できるパフォーマンスを提供します。
シームレスな統合: **包括的なサポートと使いやすい生成スクリプトにより、これらのモデルを既存のワークフローに統合するのは簡単です。
このようなモデルは、コスト、精度、カスタマイズ性に妥協がなく、LLMwareに統合されているため、簡単にアクセスできます。
LLMwareを垣間見る
LLMware** は、企業レベルのLLMベースのアプリケーションのために設計されたライブラリです。LLMware**は、企業レベルのLLMベースのアプリケーションのために設計されたライブラリであり、小規模で専門的なモデルを利用することで、個人で導入したり、企業の知識ソースと安全に統合したり、あらゆるビジネスプロセスにコスト効率よく適用したりすることができます。このツールキットは、LangChain ****やLlamaIndexに匹敵しますが、エンタープライズ環境内での高いスケーラビリティと堅牢なドキュメント管理のために調整されています。
LLMwareの構成要素:
1.**RAG Pipeline: **知識ソースを生成AIモデルに接続するライフサイクル全体のための統合コンポーネントを提供します。
2.専門モデル:事実ベースの質問応答、分類、要約、抽出のような企業タスクのための50以上の小規模で微調整されたモデルが含まれます。これらのモデルには、上記で説明したものも含まれます。次のセクションでは、そのうちの1つを実装に使用します。
LLMwareの特徴:
1.大量文書の取り込み:
1.スケーラビリティ: 何十万もの文書の取り込みを処理するために構築されたLLMwareは、並列処理と複数のワーカーへの分散をサポートしています。
2.**カスタムCベースのパーサーを使用して、PDF、Word文書、PowerPoint、Excelファイルを解析するための完全な仕様を実装しています。
2.エンド・ツー・エンド・データモデル:
1.**MongoDB](https://zilliz.com/comparison/milvus-vs-mongodb-atlas)と統合し、テキストコレクションの効率的なチャンキングとインデックス作成を可能にします。
2.**企業のデータワークフローにシームレスに統合するように設計されており、安全でスケーラブルなデータ管理を実現します。
3.LLMベースのアプリケーションのためのフレームワーク:
1.オープンソースとの互換性: この機能は、幅広いオープンソースと Hugging Face モデルのサポートを優先し、LLM アプリケーションの構築とデプロイを容易にします。
2.機能豊富な環境: 企業環境における多様なユースケースをサポートする新機能や機能を含むよう、継続的に開発されています。
4.**使いやすさ
1.例と文書:ユーザーが迅速かつ効率的に開始できるように、包括的な例と文書を提供します。
2.エンタープライズ・フォーカス: ドキュメント管理からスケーラブルな処理まで、エンタープライズ・レベルの LLM 導入のユニークなニーズに対応するために特別に構築されています。
MilvusとLLMwareを使用したプライベートクラウドでの検索拡張生成
このセクションではオンプレミスでのRAGソリューションの説明と実装を行う。LLMwareとMilvusベクトルデータベースを使ったRAGのアーキテクチャを見てみよう。
アーキテクチャ
このアーキテクチャ図は、LLMwareとMilvusを使用したRAGの構内ワークフローを示している。
LLMwareとMilvusを使用したRAGのアーキテクチャ図](https://assets.zilliz.com/Architecture_diagram_for_RAG_on_premises_using_LL_Mware_and_Milvus_9845650a88.png)
LLMwareとMilvusを使用したRAGオンプレミスのアーキテクチャ図
各コンポーネントの説明です:
1.**入力データは、処理対象となる様々なドキュメントから構成される。この例では、~80のサンプル・ドキュメントがS3バケットから取り出される。
2.**これは、ドキュメントがシステムに取り込まれる最初のステップです。このパイプラインは、関連情報を抽出し、場合によってはデータのクリーニングやフォーマットのような前処理タスクを実行することで、さらなる処理のためにドキュメントを準備する。
3.**取り込み後、ドキュメントは埋め込みモデルに渡される。この場合、Industry BERT モデルは、ドキュメントを、テキストの意味的な意味を捉える数値表現(ベクトル埋め込み)に変換する。
4.ベクトルデータベース**: Industry BERT モデルによって生成された埋め込みは、文書と一緒に、ベクトル データベースである Milvus に格納される。この特殊なベクトルデータベースは、大規模なベクトルデータを扱い、効率的に検索するように設計されている。
5.クエリ:* ユーザーは、システムにクエリを送信する。
6.クエリの埋め込み: このクエリはまた、Milvusに格納されている文書の埋め込みと比較するために埋め込みに変換されます。
7.検索文書:クエリと文書埋め込み間の類似度が計算され、より高い類似度に基づいて文書が上位にランク付けされます。
8.**類似度の高い関連文書が検索される。検索される文書の数や類似度のしきい値はカスタマイズ可能。
9.**検索された文書とクエリはLLMに送られる。
10.結果:* LLMからの応答がユーザーに提供される。
次のセクションでは、プライベート・クラウドにおけるRAGアプリケーションの実装を示す。
実装
本実装では、Milvus vector databaseに約80件の法律文書を取り込み、LLMを用いて質問を行うことで、RAGアプリケーションを構築する。このブログでは、ユーザが既にMilvusをインストール済みであり、サービスを開始できると仮定する。
インポート
まず、必要なライブラリをインストールし、環境にインポートする。llmwareとPyMilvus`が必要である。以下にインストール方法を示す:
pip install llmware
pip install pymilvus>=2.4.2
この後、必要なモジュールを llmware からインポートする。
import os
from llmware.library import Library
from llmware.retrieval import クエリ
from llmware.setup import セットアップ
from llmware.status import ステータス
from llmware.prompts import Prompt
from llmware.configs import LLMWareConfig, MilvusConfig
データをインポートしたら、設定を行います。
コンフィギュレーション
コンフィギュレーションのステップはとてもシンプルです。このステップでは、埋め込みモデル、ベクトルデータベース、LLMの名前を格納します。
embedding_model = "industry-bert-contracts"
vector_db = "milvus"
llm = "llmware/bling-1b-0.1"
このセットアップには、埋め込みモデルに industry-bert-contracts 、ベクトルデータベースに Milvus 、そして最適化されたAI駆動の文書処理と解析のための llmware/bling-1b-0.1 言語モデルが含まれている。
Milvusのセットアップ
Milvusは llmware と統合されているため、セットアップは非常に簡単である。PyMilvusをインストールしたら、以下のようにvector_dbをMilvusに、active_dbをsqlite` に設定する:
LLMWareConfig().set_active_db("sqlite")
MilvusConfig().set_config("lite", True) # 依存関係なし
LLMWareConfig().set_vector_db("milvus")
llmwareはMilvus-lite` をサポートしており、自己完結型で他の依存関係を必要としない。
ライブラリの作成
llmware`では、ライブラリは構造化されていない情報を整理するための主要な構成要素である。ユーザは多様なコンテンツを含む1つの大きなライブラリを作成することも、特定のテーマ、プロジェクト、案件、取引、アカウント、ユーザ、部署に特化した複数のライブラリを作成することもできる。
ライブラリを作成するには、Libraryクラスからcreate_new_library関数を呼び出すだけです。見てみよう。
ライブラリ名 = "contracts-Rag"
library = Library().create_new_library(library_name)
ドキュメントの取り込み
LLMware の Setup クラスは、契約書、請求書、財務報告書などの様々なサンプルドキュメントを含むサンプルファイルを AWS S3 バケットからダウンロードします。これらのサンプルは load_sample_files を使用することで常に最新版を取得することができます。この例では、"契約書 "をアップロードします。
sample_files_path = Setup().load_sample_files(over_write=False)
contracts_path = os.path.join(sample_files_path, "Agreements")
Llmwareにはadd_files` という便利な関数がある。ファイルタイプが混在しているローカルフォルダを指定すると、拡張子によって自動的にファイルを適切なパーサーにルーティングしてくれる。その後、ファイルは解析され、テキストチャンクされ、テキストコレクションデータベースにインデックスされる。
library.add_files(input_folder_path=contracts_path)
ドキュメントが読み込まれました。埋め込みファイルを作成しよう。
エンベッディングの作成
この実装では、すべてが非公開で実行されている。そのため、埋め込みモデルはオンプレでダウンロードする。前述の通り、埋め込みモデルは industry-bert-contracts で、Milvus はベクトルデータベースである。
library.install_new_embedding(embedding_model_name=embedding_model, vector_db=vector_db)
ライブラリに埋め込みをインストールした後、埋め込みステータスをチェックすることで、更新された埋め込みを確認し、モデルが正確にキャプチャされていることを確認することができます。
Status().get_embedding_status(library_name, embedding_model)
次のセクションでは、LLMコールの呼び出し方を見てみましょう。
大規模言語モデルのロード
Blingのモデルをロードするにはload_model関数を使う。これらは小さいので素早くテストするのに適している。
prompter = Prompt().load_model(llm)
検索ドキュメント
Llmwareでは、検索と取得にQuery` クラスを使用し、必須パラメータとしてライブラリを要求する。このアプローチにより、検索はライブラリの抽象化を活用することができ、異なるユースケース、ユーザー、アカウント、権限に沿った複数の異なる知識ベースをサポートすることができる。
このクラスは、テキスト検索やセマンティック検索など、多くの検索機能を可能にする。この例では、セマンティック検索を使用します。
query = "役員の基本年俸はいくらですか"
results = Query(library).semantic_query(query, result_count=50, embedding_distance_threshold=1.0)
全てのピースを結合する
このセクションでは、すべての契約をループし、関連する結果をフィルタリングし、LLMを使用してレスポンスを生成します。以下がそのコードです:
for i, contract in enumerate(os.listdir(contracts_path)):
qr = [].
for j, entries in enumerate(results):
if entries["file_source"] == contract:
print("Top Retrieval: ", j, entries["distance"], entries["text"])
qr.append(entries)
source = prompter.add_source_query_results(query_results=qr)
response = prompter.prompt_with_source(query, prompt_name="default_with_context", temperature=0.3)
for resp in response:
if "llm_response" in resp:
print("¦ llmの回答 - ", resp["llm_response"])
# 次のドキュメントのために新しく始める
プロンプター.clear_source_materials()
これがそのガイドだ。
1.**ディレクトリ内の各契約ファイルについて、関連するクエリー結果を格納するリストを初期化します。
2.**現在の契約に一致する結果をフィルタリングし、上位の検索結果を表示します。
3.**フィルタリングされた結果は、言語モデルでレスポンスを生成し、生成されたレスポンスを表示します。
4.**次の契約のためにリセットします。
クエリの結果は以下のように提供されます:
>> 契約名Rhea EXECUTIVE EMPLOYMENT AGREEMENT.pdf
トップ 検索: 1 0.6237360223214722
取締役会(またはその報酬委員会)は、雇用主の上級役員に対する標準的な報酬および業績評価方針に従って、役員の基本給を毎年見直す。給与は増額することはできますが、減額することはできません。毎年の具体的な昇給額は、これらの方針に基づいて決定されます。本契約において「基本給」とは、セクション2.2に従って定期的に設定される役員の基本給を指す。
ここでは最初の検索のみが表示されることに注意してください。
以上、MilvusとLLMwareを使用して法的文書用のRAGアプリケーションを作成することに成功しました。ベクターデータベース、エンベッディングモデル、LLMなどすべてがオンプレミスにある。
結論
AIの導入が進むにつれ、データとのやり取りはかつてないほど容易になった。しかし、多くの企業はデータをクラウドに送ることを躊躇しており、それは当然のことです。LLMwareは、パブリック・クラウド上ではなく、オンプレミスでAIシステムを構築するためのソリューションを提供しています。このソリューションは、データのプライバシーを保証し、コストを削減し、より多くの制御を提供します。
LLMwareとMilvusベクトルデータベースを使うことで、ベクトル類似性検索とLLMのパワーを組み合わせて、私たちの個人文書に質問をすることができます。Milvusは堅牢なオープンソースのベクトルデータベースで、10億スケールのベクトルデータを保存、処理、検索します。MilvusがLLMに最も関連性の高い上位K個の結果を取得すると、LLMはあなたのクエリに答えるためのコンテキストを持つようになります。
読み続けて

Turbopuffer vs. Zilliz Cloud: A Compliance and Enterprise Readiness Evaluation for Multi-Tenant Vector Search
Turbopuffer vs. Zilliz Cloud: A Compliance and Enterprise Readiness Evaluation for Multi-Tenant Vector Search

How to Install and Run OpenClaw (Previously Clawdbot/Moltbot) on Mac
Turn your Mac into an AI gateway for WhatsApp, Telegram, Discord, iMessage, and more — in under 5 minutes.

How Zilliz Saw the Future of Vector Databases—and Built for Production
An inside look at how Zilliz built vector databases for real-world use, focusing on scalability, stability, and running them reliably at scale.
