はじめに
DiffusersのGitHubリポジトリ内の「docs/source/en/api/pipelines/」以下にある「.md」ファイルから目的のファイルを抽出する方法を考えてみました。Python環境構築
pip install langchain-community langchain-ollama langchain-chroma pip install unstructured[md] pip install python-magic-bin
langchain-chroma==0.2.0 langchain-community==0.3.14 langchain-ollama==0.2.2 python-magic-bin==0.4.14 unstructured==0.16.13
リポジトリのクローン
git clone -b main --depth 1 https://github.com/huggingface/diffusers
「.md」ファイルを抽出してベクトル化した後にローカルに保存
from langchain_community.document_loaders import DirectoryLoader from langchain_ollama import OllamaEmbeddings from langchain_chroma import Chroma loader = DirectoryLoader("./diffusers/docs/source/en/api/pipelines/") raw_docs = loader.load() embed_model_id = "mxbai-embed-large:latest" embeddings = OllamaEmbeddings(model=embed_model_id) index = Chroma.from_documents( documents=raw_docs, embedding=embeddings, persist_directory = "./vectorstore" )
以下のようなエラーが出る場合があります。
Resource punkt_tab not found. Resource averaged_perceptron_tagger_eng not found. Please use the NLTK Downloader to obtain the resource:
Pythonで以下を実行すれば解決します。
import nltk nltk.download('punkt_tab') nltk.download('averaged_perceptron_tagger_eng')
「python-magic-bin」をインストールしていないと以下のエラーが出ます。
libmagic is unavailable but assists in filetype detection. Please consider installing libmagic for better results.
ファイルの検索
from langchain_chroma import Chroma from langchain_ollama import OllamaEmbeddings query = input("検索文を入力して下さい: ") embed_model_id = "mxbai-embed-large:latest" embeddings = OllamaEmbeddings(model=embed_model_id) vectorstore = Chroma( persist_directory="./vectorstore", embedding_function=embeddings ) retriever = vectorstore.as_retriever( search_kwargs={"k": 5} ) context_docs = retriever.invoke(query) for doc in context_docs: if doc.metadata.get("source"): address = doc.metadata["source"].replace("\\", "/").replace("diffusers", "https://github.com/huggingface/diffusers/blob/main") print(address) input("press any key to terminate")
実行結果
検索文を入力して下さい: Stable Diffusion3.5でIP-Adapterを使いたい https://github.com/huggingface/diffusers/blob/main/docs/source/en/api/pipelines/stable_diffusion/adapter.md https://github.com/huggingface/diffusers/blob/main/docs/source/en/api/pipelines/controlnet_sd3.md https://github.com/huggingface/diffusers/blob/main/docs/source/en/api/pipelines/stable_diffusion/stable_diffusion_3.md https://github.com/huggingface/diffusers/blob/main/docs/source/en/api/pipelines/stable_diffusion/upscale.md https://github.com/huggingface/diffusers/blob/main/docs/source/en/api/pipelines/controlnet_union.md press any key to terminate
5つのファイルへのリンクを表示してくれます。表示結果上で「Ctrl」を押しながらマウスを左クリックするとそのページが開けます。
今回の場合は3番目のリンクが一番欲しかったものです。
精度を高めるのが今後の課題です。