618ZXW

この記事では、DeepSeek-R1 と Ollam を使用してローカル アプリケーションを構築する手順を段階的に説明します。

オリジナル:Haoran Datawhale

Datawhaleのヒント

著者: Haoran、Datawhaleメンバー

昨日の記事「DeepSeek R1 ローカル展開:初心者向けガイド!」は、期待通りの成果を上げました。一方で、学習者から「ファイルをアップロードできますか?」という質問も寄せられました。はい、アップロードできます!本日、完全なチュートリアルを公開しました!

handy-ollama オープンソースチュートリアル: https://github.com/datawhalec...

オンライン閲覧アドレス: https://datawhalechina.github...

また、お知らせですが、来週水曜日の 2 月の「チーム学習」セッションには、このチュートリアルを展開するためのステップバイステップ ガイドが含まれます。

完全なチュートリアル

このチュートリアルでは、DeepSeek R1 と Ollam を使用してローカライズされた RAG (検索強化生成) アプリケーションを構築する方法について詳しく説明します。

ドキュメント処理、ベクトルの保存、モデルの呼び出しなどの主要な手順を含む例を通じて、完全な実装プロセスを説明します。

このチュートリアルでは、基本言語モデルとして DeepSeek-R1 1.5B を使用します。

モデルごとに特性や性能が異なるため、読者は実際のニーズに応じて RAG システムを実装するために他の適切なモデルを選択できます。

注: このドキュメントには、コアコードスニペットと詳細な説明が含まれています。完全なコードはノートブック (https://github.com/datawhalec...\_R1\_RAG/%E4%BD%BF%E7%94%A8%20DeepSeek%20R1%20%E5%92%8C%20Ollama%20%E5%AE%9E%E7%8E%B0%E6%9C%AC%E5%9C%B0%20RAG%20%E5%BA%94%E7%94%A8.ipynb) でご覧いただけます。

事前準備

まず、Ollam をダウンロードし、関連する環境を設定する必要があります。

Ollama の GitHub リポジトリ (https://github.com/ollama/ollama) には詳細な手順が記載されており、要約すると次のようになります。

ステップ1:Ollamをダウンロードする

(https://ollama.com/download) をダウンロードし、ダブルクリックして Ollam アプリケーションを実行します。

ステップ2: インストールの確認

コマンドラインに ollama と入力して次の情報が表示された場合、Ollama が正常にインストールされたことを意味します。

ステップ3: モデルを引っ張る

  • コマンドラインから、Ollamaモデルリスト(https://ollama.com/library)とテキスト埋め込みモデルリスト(https://python.langchain.com/..._embedding/)を参照してください。このチュートリアルでは、deepseek-r1:1.5bとnomic-embed-textを例として使用します。
  • コマンドラインで「ollam pull deepseek-r1:1.5b」と入力して、一般的なオープンソースの大規模言語モデル「deepseek-r1:1.5b」をプルします。(モデルのプルには時間がかかる場合があります。プルエラーが発生した場合は、コマンドを再入力してプルしてください。)
  • テキスト埋め込みモデル (https://ollama.com/search?c=e...)nomic-embed-text をプルするには、コマンド ラインに「ollama pull nomic-embed-text」と入力します。
  • アプリケーションが実行されると、すべてのモデルが localhost:11434 で自動的に起動します。
  • モデルの選択ではローカル ハードウェアの機能を考慮する必要があることに注意してください。このチュートリアルの参照メモリ サイズは CPU メモリ > 8 GB です。

ステップ4: モデルをデプロイする

モデルをデプロイするには、コマンド ライン ウィンドウで次のコマンドを実行します。

オラマランディープシーク-r1:1.5b

ollama run deepseek-r1:1.5b のように、コマンド ラインから直接デプロイメント モデルを実行することもできます。


Ollam を使用して DeepSeek R1 モデルを展開するだけの場合は、次の手順を実行する必要はありません。

ステップ5: 依存関係をインストールする

langchainコミュニティ

pip で langchain をインストールします。langchain\_community

彩度

pipでlangchain_chromaをインストールする

オラマ

pip で langchain_ollama をインストールします


準備が完了したら、LangChain、Ollam、DeepSeek R1をベースにしたローカルRAGアプリケーションの構築を始めましょう。具体的な実装手順については、以下で詳しく説明します。

ローカルRAGアプリケーションの実装

1. ドキュメントの読み込み

PDF ドキュメントを読み込み、適切なサイズのテキスト ブロックに分割します。

langchain\_community.document\_loadersからPDFPlumberLoaderをインポートします

ファイル = "DeepSeek_R1.pdf"

PDFを読み込む

ローダー = PDFPlumberLoader(ファイル)
ドキュメント = loader.load()

langchain.text\_splitterからRecursiveCharacterTextSplitterをインポートします
text\_splitter = RecursiveCharacterTextSplitter(チャンク\_size=500, チャンク\_overlap=0)
all\_splits = text\_splitter.split\_documents(ドキュメント)

  1. ベクトルストレージを初期化する

Chroma データベースを使用してドキュメント ベクトルを保存し、Ollama が提供する埋め込みモデルを構成します。

langchain\_chromaからChromaをインポート
langchain\_ollamaからOllamaEmbeddingsをインポートします

ローカル_埋め込み = OllamaEmbeddings(モデル="nomic-embed-text")

ベクトルストア = Chroma.from\_documents(ドキュメント=all\_splits、埋め込み=local\_embeddings)

3. 連鎖式の構築

モデルとプロンプト テンプレートを設定し、処理チェーンを構築します。

langchain\_core.output\_parsers から StrOutputParser をインポートします
langchain\_core.promptsからChatPromptTemplateをインポートします
langchain\_ollamaからChatOllamaをインポート

モデル = ChatOllama(
モデル="deepseek-r1:1.5b",

プロンプト = ChatPromptTemplate.from\_template(
「取得したドキュメントの主なテーマを要約してください: {docs}」

入力ドキュメントを文字列に変換します。

デフフォーマット_docs(ドキュメント):
"\n\n".join(doc.page\_content for doc in docs) を返します

チェーン = {"docs": format\_docs} | プロンプト | モデル | StrOutputParser()

question = 「DeepSeek プロジェクトの目的は何ですか?」

docs = vectorstore.similarity\_search(質問)

chain.invoke(ドキュメント)

4. 検索機能付きQA

検索機能と質疑応答機能を統合します。

langchain\_core.runnables から RunnablePassthrough をインポートします

RAG_TEMPLATE = """
あなたは質疑応答タスクのアシスタントです。以下の文脈情報を用いて質問に答えてください。答えがわからない場合は、「わからない」とだけ答えてください。最大3文で簡潔に答えてください。

<コンテキスト>
{コンテクスト}
</コンテキスト>

次の質問に答えてください。

{質問}"""

rag\_prompt = ChatPromptTemplate.from\_template(RAG\_TEMPLATE)

リトリーバー = vectorstore.as\_retriever()

qa_chain = (
{"context": リトリーバー | format\_docs, "question": RunnablePassthrough()}
| ラグプロンプト
| モデル
| StrOutputParser()

question = 「DeepSeek プロジェクトの目的は何ですか?」

走る

qa_chain.invoke(質問)

要約

このチュートリアルでは、DeepSeek R1とOllamを使用してローカライズされたRAGアプリケーションシステムを構築する方法について詳しく説明します。以下の4つの主要な手順で、すべての機能を実装しました。

  1. ドキュメント処理: PDFPlumberLoader を使用して PDF ドキュメントを読み込み、RecursiveCharacterTextSplitter を使用してテキストを適切なサイズのブロックに分割します。
  2. ベクトル ストレージ: Chroma データベースと Ollama の埋め込みモデルを使用してベクトル ストレージ システムが確立され、後続の類似性検索の基盤が提供されます。
  3. チェーン構築: ドキュメント処理、プロンプト テンプレート、およびモデル応答を合理化されたプロセスに統合するための処理チェーンを設計および実装します。
  4. RAG 実装: 検索機能と質問応答機能を統合することにより、ドキュメントの内容に基づいてユーザーの問い合わせに回答できる、完全な検索強化生成システムが実装されました。

このチュートリアルでは、ローカルRAGシステムを素早く構築し、特定のニーズに合わせてカスタマイズする方法を説明します。最良の結果を得るには、実際に様々なモデルとパラメータ設定を試してみることをお勧めします。

注: Streamlit や FastAPI などのツールを使用すると、ローカル RAG アプリケーションを Web サービスとして展開して、より幅広いアプリケーション シナリオを実現できます。

リポジトリには app.py ファイル (https://github.com/datawhalec...\_R1\_RAG/app.py) も用意されており、これを直接実行して Web サービスを開始できます。

ドキュメント「DeepSeek R1 と Ollama を使用して RAG システムを構築する」(https://apidog.com/blog/rag-d...) を参照してください。

注意: このコードを実行する前に、Ollama サービスが実行されている必要があります。

チュートリアル全体を完了しました!おめでとうございます!👍

いいね (3件のいいね!)↓