AIの急速に進化する世界では、大規模な言語モデルが速度、精度、および費用効率の境界を押し広げています。 OpenaiのO1に匹敵するオープンソースモデルであるDeepseek R1の最近のリリースは、特に27倍低コストと優れた推論機能を考えると、AIスペースのホットトピックです。これをQdrantのバイナリ量子化と組み合わせて、効率的で迅速なベクトル検索で、1,000ページ以上のドキュメントをインデックスできます。この記事では、1,000ページのインデックスを作成し、GROQを使用して数秒で複雑なクエリに答えることができるBhagavad Gita AIアシスタントを作成し、ドメイン固有の精度で洞察を提供します。
学習目標
データサイエンスブログの一部として公開されました。 目次deepseek r1 vs openai o1ベクターデータベースのバイナリ量子化とは何ですか? deepseek r1 vs openai o1
Deepseek R1は、APIコストを27倍低く、推論ベンチマークでほぼ同期のパフォーマンスで挑戦します。 OpenaiのO1クローズド、サブスクリプションベースのモデル(月額$ 200)、Deepseek R1 ISFREE、オープンソース、および予算志向のプロジェクトや実験に最適です。データの摂取:900ページのBhagavad Gita PDFはテキストチャンクに分かれています。
埋め込み:QDRANT FASTEMBEDのテキストからベクトルの埋め込みモデル。
LLM推論:GROQ LPUを介したDeepseek R1は、コンテキスト認識応答を生成します。 UI:拡張可能な「思考プロセス」の可視性を備えたretrylidアプリ。
データが保存されたら、VSコード、streamlit、またはその他のプラットフォームでも、コレクション名を使用してどこでも推論を実行できます。
ステップ2:ドキュメントの処理と埋め込み
ここでは、生のテキストをベクトル表現に変換する重要なタスクを処理します。 SimpleDirectoryReaderは、指定されたフォルダーからドキュメントをロードします フォルダー、つまりデータディレクトリを作成し、内部のすべてのドキュメントを追加します。私たちの場合、Bhagavad Gitaドキュメントをダウンロードして、データフォルダーに保存しました。
〜900ページのBhagavad Gitaドキュメントをこちらからダウンロードできます:IskConmangaluru !pip install llama-index !pip install llama-index-vector-stores-qdrant llama-index-embeddings-fastembed !pip install llama-index-readers-file !pip install llama-index-llms-groqqdrantのastembedは、効率的な埋め込み生成のために設計された軽量で高速のPythonライブラリです。人気のあるテキストモデルをサポートし、推論のためのONNXランタイムとともに量子化されたモデルの重みを利用して、重い依存関係なしで高性能を確保します。
テキストチャンクを埋め込みに変換するには、QDrantのastembedを使用します。これらを50のドキュメントのバッチで処理して、メモリを効率的に管理しています。Step3:バイナリ量子化によるQDRANTセットアップ
import logging import sys import os import qdrant_client from qdrant_client import models from llama_index.core import SimpleDirectoryReader from llama_index.embeddings.fastembed import FastEmbedEmbedding from llama_index.llms.groq import Groq # deep seek r1 implementation
メモリ内モード:location =”:memory:”を使用して、一度だけ実行される一時的なインスタンスを作成します。
localhost:location =” localhost”を使用して、dockerインスタンスを実行する必要があります。ここでセットアップガイドをフォローしてください:QDRANT QuickStart。
インデックスプロセスは、処理されたドキュメントとその埋め込みをバッチ内のQDRANTにアップロードします。各ドキュメントは、そのベクトル表現と一緒に保存され、検索可能な知識ベースを作成します。
data = SimpleDirectoryReader("data").load_data() texts = [doc.text for doc in data] embeddings = [] BATCH_SIZE = 50
Step5:DeepSeek R1
を使用したRag Pipeline
Process-1:R-関連するドキュメントを取得embed_model = FastEmbedEmbedding(model_name="thenlper/gte-large") for page in range(0, len(texts), BATCH_SIZE): page_content = texts[page:page + BATCH_SIZE] response = embed_model.get_text_embedding_batch(page_content) embeddings.extend(response)
!pip install llama-index !pip install llama-index-vector-stores-qdrant llama-index-embeddings-fastembed !pip install llama-index-readers-file !pip install llama-index-llms-groq
ragの場合、chatprompttemplateを使用してシステムのインタラクションテンプレートを定義することが重要です。このテンプレートは、複数の言語(英語、ヒンディー語、サンスクリット語)を理解できるバガヴァッドギータに知識のある専門のアシスタントを作成します。
コンテキストインジェクションとクエリ処理用の構造化されたフォーマットが含まれており、コンテキスト外の質問を処理するための明確な指示が含まれています。Process-3:g-応答の生成
import logging import sys import os import qdrant_client from qdrant_client import models from llama_index.core import SimpleDirectoryReader from llama_index.embeddings.fastembed import FastEmbedEmbedding from llama_index.llms.groq import Groq # deep seek r1 implementation
出力:(構文:< Think> Reasoning</think> response)
data = SimpleDirectoryReader("data").load_data() texts = [doc.text for doc in data] embeddings = [] BATCH_SIZE = 50
embed_model = FastEmbedEmbedding(model_name="thenlper/gte-large") for page in range(0, len(texts), BATCH_SIZE): page_content = texts[page:page + BATCH_SIZE] response = embed_model.get_text_embedding_batch(page_content) embeddings.extend(response)
このアプリケーションをもう一度使用する必要がある場合はどうなりますか?私たちはすべての手順を再度受けることになっていますか?
です
ステップ6:インデックス推論の保存あなたがすでに書いたものに大きな違いはありません。 query_pointsを実行するために必要なコレクション名とともに、同じ検索とパイプラインの機能を再利用します。
Step7:ui
collection_name = "bhagavad-gita" client = qdrant_client.QdrantClient( #location=":memory:", url = "QDRANT_URL", # replace QDRANT_URL with your endpoint api_key = "QDRANT_API_KEY", # replace QDRANT_API_KEY with your API keys prefer_grpc=True )
retrylittで、ユーザーの質問のたびに、状態はリフレッシュされます。ページ全体が再度更新されないようにするために、cache_resourceのretrylistの下にいくつかの初期化ステップを定義します。
ユーザーが質問を入力したときに覚えておいてください、Fastembedはモデルの重みを一度ダウンロードします。GROQとQDRANTインスタンス化にも同じことが言えます。UIでは、推論を整ったエキスパンダーの下に保持し、推論部分を取得するために、文字列インデックスを使用して推論と実際の応答を抽出しましょう。
チャットボットコンポーネント
if not client.collection_exists(collection_name=collection_name): client.create_collection( collection_name=collection_name, vectors_config=models.VectorParams(size=1024, distance=models.Distance.COSINE, on_disk=True), quantization_config=models.BinaryQuantization( binary=models.BinaryQuantizationConfig( always_ram=True, ), ), ) else: print("Collection already exists")
保存されたメッセージを繰り返し、チャットのようなインターフェイスに表示します。アシスタント応答の場合、extract_thinking_and_answer関数を使用して、思考プロセス(拡張可能なセクションに表示)を実際の回答から分離します。
残りのコードは、retrylittのチャットボットコンポーネント、つまりユーザーの質問の入力フィールドを作成する入力処理を定義するための標準形式です。質問が提出されると、メッセージ履歴に表示され、追加されます。これで、ロードスピナーを表示しながら、ラグパイプラインを介してユーザーの質問を処理します。応答は思考プロセスと回答コンポーネントに分割されます。
!pip install llama-index !pip install llama-index-vector-stores-qdrant llama-index-embeddings-fastembed !pip install llama-index-readers-file !pip install llama-index-llms-groq
キーテイクアウト
aでdeepseek r1を選択するのか。 Deepseek R1は、APIコストの27倍、同等の推論精度(20.5%対O1の21%)、および優れたコーディング/ドメイン固有のパフォーマンスを提供します。聖書分析のような専門的なタスクに最適です。コストと焦点を絞った専門知識が重要です。
この記事に示されているメディアは、Analytics Vidhyaが所有しておらず、著者の裁量で使用されています。
以上がBhagavad Gita AIアシスタントの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。