Penyimpanan dan pengambilan RAG dengan database vektor

Mengembangkan Aplikasi LLM dengan LangChain

Jonathan Bennion

AI Engineer & LangChain Contributor

Langkah pengembangan RAG

Alur kerja RAG umum: pemuat dokumen, pemisah dokumen, serta proses penyimpanan dan pengambilan.

  • Fokus video ini: penyimpanan dan pengambilan
Mengembangkan Aplikasi LLM dengan LangChain

Apa itu database vektor dan mengapa dibutuhkan?

Alur kerja RAG tipikal.

Mengembangkan Aplikasi LLM dengan LangChain

Database vektor mana yang harus digunakan?

 

Lanskap berbagai database vektor yang tersedia, dipisah menurut open source dan tertutup, serta apakah khusus vektor atau hanya mendukung operasi tersebut.

 

Perlu dipertimbangkan:

  • Open source vs. tertutup (lisensi)
  • Cloud vs. on-premises
  • Ringan vs. bertenaga
1 Kredit Gambar: Yingjun Wu
Mengembangkan Aplikasi LLM dengan LangChain

Kenali dokumennya...

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"}
    )
]
Mengembangkan Aplikasi LLM dengan LangChain

Menyiapkan database vektor Chroma

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} )
Mengembangkan Aplikasi LLM dengan LangChain

Membangun templat prompt

from langchain_core.prompts import ChatPromptTemplate

message = """
Review and fix the following TechStack marketing copy with the following guidelines in consideration:

Guidelines:
{guidelines}

Copy:
{copy}

Fixed Copy:
"""

prompt_template = ChatPromptTemplate.from_messages([("human", message)])
Mengembangkan Aplikasi LLM dengan LangChain

Merangkai semuanya!

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!
Mengembangkan Aplikasi LLM dengan LangChain

Ayo berlatih!

Mengembangkan Aplikasi LLM dengan LangChain

Preparing Video For Download...