การจัดเก็บและดึงข้อมูลแบบ RAG โดยใช้ vector database

การพัฒนาแอปพลิเคชัน LLM ด้วย LangChain

Jonathan Bennion

AI Engineer & LangChain Contributor

ขั้นตอนการพัฒนา RAG

ขั้นตอน RAG โดยรวม: document loader, document splitter และกระบวนการจัดเก็บและดึงข้อมูล

  • จุดสำคัญของวิดีโอนี้: การจัดเก็บ และ การดึงข้อมูล
การพัฒนาแอปพลิเคชัน LLM ด้วย LangChain

Vector database คืออะไร และทำไมจึงจำเป็น?

ขั้นตอน RAG แบบทั่วไป

การพัฒนาแอปพลิเคชัน LLM ด้วย LangChain

ควรเลือกใช้ vector database ไหน?

 

ภาพรวมของ vector database ต่าง ๆ ที่มีให้ใช้งาน แบ่งตามโอเพนซอร์สและปิดซอร์ส รวมถึงแบ่งตามว่าเป็น vector database โดยเฉพาะหรือรองรับฟีเจอร์นั้นเป็นส่วนเสริม

 

ปัจจัยที่ควรพิจารณา:

  • โอเพนซอร์สหรือปิดซอร์ส (ใบอนุญาต)
  • Cloud หรือ on-premises
  • น้ำหนักเบาหรือประสิทธิภาพสูง
1 เครดิตภาพ: Yingjun Wu
การพัฒนาแอปพลิเคชัน LLM ด้วย LangChain

ทำความรู้จักกับเอกสาร...

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"}
    )
]
การพัฒนาแอปพลิเคชัน LLM ด้วย LangChain

ตั้งค่า Chroma vector database

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} )
การพัฒนาแอปพลิเคชัน LLM ด้วย LangChain

สร้าง prompt template

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)])
การพัฒนาแอปพลิเคชัน LLM ด้วย LangChain

เชื่อมทุกอย่างเข้าด้วยกัน!

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!
การพัฒนาแอปพลิเคชัน LLM ด้วย LangChain

มาฝึกกันเถอะ!

การพัฒนาแอปพลิเคชัน LLM ด้วย LangChain

Preparing Video For Download...