簡単
この文書では ディープシーク R1と オーラマ ローカライズされたRAG(Retrieval Augmented Generation)アプリケーションを構築することができます。を最大限に活用する素晴らしい方法でもある。 LangChainによるローカルRAGアプリケーションの構築 サプリメントだ。
ドキュメント処理、ベクトル・ストレージ、モデル呼び出し、その他の重要なステップを含む、完全な実装プロセスを例題を通して示します。このチュートリアルでは ディープシーク-R1 1.5Bを基本言語モデルとする。異なるモデルにはそれぞれの特徴と性能があることを考慮し、読者は実際のニーズに応じて他の適切なモデルを選択して実装することができる。 ラグ システム。
注:この文書には、核となるコードの断片と詳細な説明が含まれています。完全なコードは ノート .
事前準備
まず、Ollamaをダウンロードして環境を設定する必要がある。
OllamaのGitHubリポジトリには詳細な説明が記載されているが、簡単にまとめると以下のようになる。
Step1, Ollamaをダウンロードする。
ダウンロード をダブルクリックしてOllamaアプリケーションを実行します。
Step2、インストールを確認する。
コマンドラインで ollama
以下のメッセージが表示されれば、Ollamaは正常にインストールされています。
ステップ3、モデルを引っ張る。
- コマンドラインから Ollamaモデル一覧 歌で応える テキスト埋め込みモデル一覧 モデルを引っ張るそのチュートリアルでは
deepseek-r1:1.5b
歌で応えるnomic-embed-text
例- コマンドライン入力
ollama pull deepseek-r1:1.5b
一般的なオープンソースの大規模言語モデルを引き出すdeepseek-r1:1.5b
(モデルをプルする際に時間がかかる場合があります。引き抜きエラーが発生した場合は、引き抜きコマンドを再入力してください) - コマンドライン入力
ollama pull nomic-embed-text
プル テキスト埋め込みモデルnomic-embed-text
.
- コマンドライン入力
- アプリケーションを実行すると、すべてのモデルは自動的に
localhost:11434
スタートについて - モデルを選択する際には、ローカルハードウェアの機能、このチュートリアルのリファレンスビデオメモリサイズを考慮する必要があることに注意してください。
CPU Memory > 8GB
.
ステップ4、モデルを配置する。
コマンドラインウィンドウでは、以下のコマンドを実行してモデルをデプロイします。
ollama run deepseek-r1:1.5b
コマンドラインから直接デプロイメントモデルを実行することも可能です。
ollama run deepseek-r1:1.5b
.
Ollama を使用して DeepSeek R1 モデルを配置する場合のみ、以下の手順は必要ありません。
Step5, 依存関係をインストールする。
# langchain_community
pip install langchain langchain_community
# Chroma
pip install langchain_chroma
# Ollama
pip install langchain_ollama
それでは、LangChain、Ollama、そして以下の3つをベースに、ステップバイステップでソリューションを構築していこう。 ディープシークR1 以下、実施ステップを詳細に説明する。以下、実施ステップを詳細に説明する。
1.ドキュメントの読み込み
PDF文書を読み込み、適切な大きさのテキストブロックにカット。
from langchain_community.document_loaders import PDFPlumberLoader
file = "DeepSeek_R1.pdf"
# Load the PDF
loader = PDFPlumberLoader(file)
docs = loader.load()
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
all_splits = text_splitter.split_documents(docs)
2.ベクターストアの初期化
Chromaデータベースを使って文書ベクトルを保存し、Ollamaが提供する埋め込みモデルを設定する。
from langchain_chroma import Chroma
from langchain_ollama import OllamaEmbeddings
local_embeddings = OllamaEmbeddings(model="nomic-embed-text")
vectorstore = Chroma.from_documents(documents=all_splits, embedding=local_embeddings)
3.チェーン式の構築
処理チェーンを構築するために、モデルとキューのテンプレートを設定します。
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_ollama import ChatOllama
model = ChatOllama(
model="deepseek-r1:1.5b",
)
prompt = ChatPromptTemplate.from_template(
"Summarize the main themes in these retrieved docs: {docs}"
)
# 将传入的文档转换成字符串的形式
def format_docs(docs):
return "\n\n".join(doc.page_content for doc in docs)
chain = {"docs": format_docs} | prompt | model | StrOutputParser()
question = "What is the purpose of the DeepSeek project?"
docs = vectorstore.similarity_search(question)
chain.invoke(docs)
4.検索によるQA
検索機能とQ&A機能を統合。
from langchain_core.runnables import RunnablePassthrough
RAG_TEMPLATE = """
You are an assistant for question-answering tasks. Use the following pieces of retrieved context to answer the question. If you don't know the answer, just say that you don't know. Use three sentences maximum and keep the answer concise.
<context>
{context}
</context>
Answer the following question:
{question}"""
rag_prompt = ChatPromptTemplate.from_template(RAG_TEMPLATE)
retriever = vectorstore.as_retriever()
qa_chain = (
{"context": retriever | format_docs, "question": RunnablePassthrough()}
| rag_prompt
| model
| StrOutputParser()
)
question = "What is the purpose of the DeepSeek project?"
# Run
qa_chain.invoke(question)
概要
このチュートリアルでは、DeepSeek R1 と Ollama を使用して、ローカライズされた RAG アプリケーションを構築する方法を詳しく説明します。主に4つのステップで完全な機能を実現します:
- ファイル処理 PDFPlumberLoader を使っ て PDF 文書を読み込み、 RecursiveCharacterTextSplitter を使っ てテ キ ス ト を適切な大き さ の塊に切 り ます。
- ベクトルきおくそうち ChromaデータベースとOllamaの埋め込みモデルを用いたベクトルストレージシステム。
- チェーンビルド ドキュメント処理、キュー・テンプレート、モデル・レスポンスをフロー・スルー・プロセスに統合する処理チェーンを設計し、実装する。
- RAGの実現 検索機能とQ&A機能を統合することで、文書の内容に基づいてユーザーの問い合わせに答えることができる、完全な検索機能付き生成システムを実装しています。
このチュートリアルを読めば、自分のローカルRAGシステムを素早く構築し、実際のニーズに合わせてカスタマイズして改良することができます。このチュートリアルを最大限に活用するために、様々なモデルやパラメータ設定を実際に試してみることをお勧めします。
注:streamlitやFastAPIなどのツールを使用することで、ローカルRAGアプリケーションをウェブサービスとしてデプロイすることができ、より幅広いアプリケーションシナリオが可能になります。
また、このリポジトリは
app.py
ファイルを直接実行することで、ウェブ・サービスを開始することができます。 ドキュメント DeepSeek R1とOllamaによるRAGシステムの構築. 注:このコードを実行する前に、あらかじめOllamaサービスを実行してください。
ダイアログページは以下の通り: