目次

  1. ドキュメントのロード
  2. ドキュメントの分割
  3. ドキュメントのベクトル化
  4. ドキュメントの検索

ドキュメントのロード

GitLoaderを使用する例.

from langchain_community.document_loaders import GitLoader

def file_filter(file_path: str) -> bool:
"""拡張子txtのファイルのみを抽出するためのフィルタ"""
return file_path.endswith(".txt")

loader = GitLoader(
clone_url = "クローン元のURL",
repo_path = "クローン先のパス",
branch = "ブランチ名",
file_filter = file_filter,
)

ここで,

docs = loader.load()

とするとフィルタで絞り込まれた全文書が返る.

ドキュメントの分割

from langchain_text_splitters import CharacterTextSplitter

text_splitter = CharacterTextSplitter(chunk_size = 1000, chunk_overlap = 0)
split_docs = text_splitter.split_documents(docs)

ドキュメントのベクトル化

from langchain_openai import OpenAIEmbeddings
from langchain_chroma import Chroma

embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
db = Chroma.from_documents(split_docs, embeddings)

ドキュメントの検索

retriever = db.as_retriever()
context_docs = retriever.invoke("クエリ")

以上で,クエリのベクトルの類似度が高い文脈を掬い上げる.