Vektör veritabanlarıyla RAG depolama ve getirme

LangChain ile LLM Uygulamaları Geliştirme

Jonathan Bennion

AI Engineer & LangChain Contributor

RAG geliştirme adımları

Genel RAG iş akışı: bir belge yükleyici, belge bölücü ve depolama-getirme süreci.

  • Bu videonun odağı: depolama ve getirme
LangChain ile LLM Uygulamaları Geliştirme

Vektör veritabanı nedir ve neden gerekir?

Tipik bir RAG iş akışı.

LangChain ile LLM Uygulamaları Geliştirme

Hangi vektör veritabanını kullanmalıyım?

 

Farklı vektör veritabanlarının manzarası; açık/kapalı kaynak ve özel vektör veritabanı ya da sadece bu işlemi destekleyenler olarak ayrılmış.

 

Dikkate alınması gerekenler:

  • Açık kaynak vs. kapalı kaynak (lisans)
  • Bulut vs. kurum içi
  • Hafif vs. güçlü
1 Görsel: Yingjun Wu
LangChain ile LLM Uygulamaları Geliştirme

Belgelerle tanışın...

docs
[
    Document(
        page_content="In all marketing copy, TechStack should always be written with the T and S
        capitalized. Incorrect: techstack, Techstack, etc.",
        metadata={"guideline": "brand-capitalization"}
    ),
    Document(
        page_content="Our users should be referred to as techies in both internal and external
        communications.",
        metadata={"guideline": "referring-to-users"}
    )
]
LangChain ile LLM Uygulamaları Geliştirme

Chroma vektör veritabanı kurma

from langchain_openai import OpenAIEmbeddings
from langchain_chroma import Chroma

embedding_function = OpenAIEmbeddings(api_key=openai_api_key, model='text-embedding-3-small')


vectorstore = Chroma.from_documents( docs, embedding=embedding_function, persist_directory="path/to/directory" )
retriever = vectorstore.as_retriever( search_type="similarity", search_kwargs={"k": 2} )
LangChain ile LLM Uygulamaları Geliştirme

Bir prompt şablonu oluşturma

from langchain_core.prompts import ChatPromptTemplate

message = """
Aşağıdaki TechStack pazarlama metnini şu kurallara göre gözden geçirin ve düzeltin:

Kurallar:
{guidelines}

Metin:
{copy}

Düzeltilmiş Metin:
"""

prompt_template = ChatPromptTemplate.from_messages([("human", message)])
LangChain ile LLM Uygulamaları Geliştirme

Hepsini zincirleyelim!

from langchain_core.runnables import RunnablePassthrough

rag_chain = ({"guidelines": retriever, "copy": RunnablePassthrough()}
             | prompt_template
             | llm)

response = rag_chain.invoke("Here at techstack, our users are the best in the world!")
print(response.content)
Here at TechStack, our techies are the best in the world!
LangChain ile LLM Uygulamaları Geliştirme

Hadi pratik yapalım!

LangChain ile LLM Uygulamaları Geliştirme

Preparing Video For Download...