이 문서는 LangChain을 사용하여 Ollama embedding 모델을 시작하는 데 도움을 드립니다. OllamaEmbeddings의 기능 및 구성 옵션에 대한 자세한 문서는 API reference를 참조하세요.

Overview

Integration details

Setup

먼저, 이 지침을 따라 로컬 Ollama 인스턴스를 설정하고 실행하세요:
  • 지원되는 플랫폼(Windows Subsystem for Linux(WSL), macOS, Linux 포함)에 Ollama를 다운로드하고 설치합니다
    • macOS 사용자는 Homebrew를 통해 brew install ollama로 설치하고 brew services start ollama로 시작할 수 있습니다
  • ollama pull <name-of-model>을 통해 사용 가능한 LLM 모델을 가져옵니다
    • model library를 통해 사용 가능한 모델 목록을 확인하세요
    • 예: ollama pull llama3
  • 이렇게 하면 모델의 기본 태그 버전이 다운로드됩니다. 일반적으로 기본값은 최신의 가장 작은 크기의 파라미터 모델을 가리킵니다.
Mac에서는 모델이 ~/.ollama/models에 다운로드됩니다 Linux(또는 WSL)에서는 모델이 /usr/share/ollama/.ollama/models에 저장됩니다
  • 관심 있는 모델의 정확한 버전을 지정하려면 ollama pull vicuna:13b-v1.5-16k-q4_0과 같이 사용하세요 (이 경우 Vicuna 모델의 다양한 태그를 확인하세요)
  • 가져온 모든 모델을 보려면 ollama list를 사용하세요
  • 명령줄에서 모델과 직접 대화하려면 ollama run <name-of-model>을 사용하세요
  • 더 많은 명령어는 Ollama documentation을 참조하세요. 터미널에서 ollama help를 실행하여 사용 가능한 명령어를 확인할 수 있습니다.
모델 호출의 자동 추적을 활성화하려면 LangSmith API 키를 설정하세요:
os.environ["LANGSMITH_TRACING"] = "true"
os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")

Installation

LangChain Ollama integration은 langchain-ollama 패키지에 있습니다:
pip install -qU langchain-ollama
Note: you may need to restart the kernel to use updated packages.

Instantiation

이제 모델 객체를 인스턴스화하고 embedding을 생성할 수 있습니다:
from langchain_ollama import OllamaEmbeddings

embeddings = OllamaEmbeddings(
    model="llama3",
)

Indexing and Retrieval

Embedding 모델은 데이터 인덱싱과 나중에 검색하는 과정 모두에서 retrieval-augmented generation (RAG) 플로우에 자주 사용됩니다. 더 자세한 지침은 RAG tutorials를 참조하세요. 아래에서는 위에서 초기화한 embeddings 객체를 사용하여 데이터를 인덱싱하고 검색하는 방법을 확인할 수 있습니다. 이 예제에서는 InMemoryVectorStore에서 샘플 문서를 인덱싱하고 검색합니다.
# Create a vector store with a sample text
from langchain_core.vectorstores import InMemoryVectorStore

text = "LangChain is the framework for building context-aware reasoning applications"

vectorstore = InMemoryVectorStore.from_texts(
    [text],
    embedding=embeddings,
)

# Use the vectorstore as a retriever
retriever = vectorstore.as_retriever()

# Retrieve the most similar text
retrieved_documents = retriever.invoke("What is LangChain?")

# Show the retrieved document's content
print(retrieved_documents[0].page_content)
LangChain is the framework for building context-aware reasoning applications

Direct Usage

내부적으로 vectorstore와 retriever 구현은 embeddings.embed_documents(...)embeddings.embed_query(...)를 호출하여 from_texts 및 retrieval invoke 작업에 사용되는 텍스트에 대한 embedding을 생성합니다. 이러한 메서드를 직접 호출하여 자신의 사용 사례에 맞는 embedding을 얻을 수 있습니다.

Embed single texts

embed_query를 사용하여 단일 텍스트 또는 문서를 embedding할 수 있습니다:
single_vector = embeddings.embed_query(text)
print(str(single_vector)[:100])  # Show the first 100 characters of the vector
[-0.0039849705, 0.023019705, -0.001768838, -0.0058736936, 0.00040999008, 0.017861595, -0.011274585,

Embed multiple texts

embed_documents를 사용하여 여러 텍스트를 embedding할 수 있습니다:
text2 = (
    "LangGraph is a library for building stateful, multi-actor applications with LLMs"
)
two_vectors = embeddings.embed_documents([text, text2])
for vector in two_vectors:
    print(str(vector)[:100])  # Show the first 100 characters of the vector
[-0.0039849705, 0.023019705, -0.001768838, -0.0058736936, 0.00040999008, 0.017861595, -0.011274585,
[-0.0066985516, 0.009878328, 0.008019467, -0.009384944, -0.029560851, 0.025744654, 0.004872892, -0.0

API reference

OllamaEmbeddings의 기능 및 구성 옵션에 대한 자세한 문서는 API reference를 참조하세요.
Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I