RAG From Scratch: Part 1 (Overview)

00:05:13
https://www.youtube.com/watch?v=wd7TZ4w1mSw

摘要

TLDRVideon introducerar en ny serie om Retrieval Augmented Generation (RAG), där man kommer att utforska både de grundläggande principerna och gå vidare till mer avancerade ämnen. RAG är viktigt eftersom stora språkmodeller (LLMs) ofta saknar åtkomst till privat och nyligen skapad data som inte ingår i deras förutbildades datamängd. RAG-processen innebär tre steg: indexera externa dokument, hämta relevanta dokument baserat på en fråga, och använda dessa dokument för att generera ett svar. Videon nämner användning av OpenAI-embeddingar och Chromas för att lagra och hämta data och förklarar konceptet med allt större kontextfönster i LLMs. Fokus i kommande videor kommer ligga på att bryta ner och fördjupa sig inom dessa ämnen.

心得

  • 🤔 LLMs saknar privat och aktuell data i sin förträning.
  • 📊 RAG-processen sker i tre steg: indexera, hämta, generera.
  • 📈 Större kontextfönster möjliggör mer information.
  • 🛠️ Indexering underlättar dokumenthämtning.
  • 🔧 Användning av OpenAI-embeddingar och Chromas nämns.
  • 🔍 "Retriever" hämtar relevanta dokument.
  • 🔄 Kodexempel på RAG-processen visas.
  • 🗂️ Dokumenten delas upp i mindre delar för att indexeras.
  • 💡 Följande videor kommer att utforska ämnet mer detaljerat.
  • 🎥 Videorna är korta, cirka fem minuter vardera.

时间轴

  • 00:00:00 - 00:05:13

    I denna video introducerar Lance från Lang Chain en ny serie kallad "RAG från grunden" där han förklarar de grundläggande principerna för RAG (Retrieval-Augmented Generation) och bygger upp till mer avancerade ämnen. RAG är användbart då stora språkmodeller (LLM) inte har tillgång till allt data, exempelvis privat och ny information. LLM har dock fått allt större kontextfönster, och RAG handlar om att integrera externa data för att förbättra resultat. Processen inkluderar indexering av dokument, hämtning av relevanta dokument utifrån en fråga, och slutligen generering av ett svar baserat på dessa dokument. Serien kommer att djupdyka i dessa tre komponenter - indexering, hämtning och generering. Denna video visar också en snabb kodgenomgång av RAG, där dokument laddas, delas upp, indexeras och används i en kedja för att generera svar på frågor. Det ges även en demonstration av hur processen ser ut i praktiken.

思维导图

Mind Map

常见问题

  • Vad är syftet med RAG?

    Syftet med RAG är att ge LLMs åtkomst till data de inte har haft under sin förträning, såsom privat och aktuell data.

  • Vilka är de tre stegen i RAG-processen?

    RAG-processen involverar indexering av externa dokument, hämtning av relevanta dokument baserat på en fråga, och generering av ett svar med hjälp av dessa dokument.

  • Varför behöver man indexera dokument i RAG?

    Indexering gör det lättare att hämta relevanta dokument baserat på en specifik fråga eller ingång.

  • Vad innebär det att LLMs har allt större kontextfönster?

    Det innebär att LLMs kan hantera fler tokens, vilket motsvarar information från dussintals upp till hundratals sidor från externa källor.

  • Vad gör en "retriever" i RAG?

    En 'retriever' hittar och hämtar dokument som är relevanta för en given fråga, baserat på den lagrade indexeringen.

  • Hur används OpenAI-embeddingar och Chromas i den här processen?

    OpenAI-embeddingar används för att representera textbitar i ett numeriskt format och Chromas används för att lagra dessa representationer i en lokal Vector-databas.

  • Vad kommer den här videoserien att täcka?

    Den kommer att täcka grundläggande koncept såsom indexering, hämtning och generering samt gå vidare till avancerade ämnen inom RAG.

  • Hur lång kommer varje video att vara i snitt?

    Varje video syftar till att vara cirka fem minuter lång.

查看更多视频摘要

即时访问由人工智能支持的免费 YouTube 视频摘要!
字幕
en
自动滚动:
  • 00:00:03
    hi this is Lance from Lang chain we're
  • 00:00:05
    starting a new series called rag from
  • 00:00:07
    scratch that's going to walk through
  • 00:00:09
    some of the basic principles for Rag and
  • 00:00:12
    kind of build up to Advanced
  • 00:00:15
    topics um so one of the main motivations
  • 00:00:18
    for rag is simply that llms haven't seen
  • 00:00:21
    all of the data that you may care about
  • 00:00:24
    so like private data or very recent data
  • 00:00:26
    would not be included in the
  • 00:00:29
    pre-training Run for these LMS and you
  • 00:00:31
    can see here on the graph on the xaxis
  • 00:00:33
    that the number of tokens that they're
  • 00:00:35
    pre-trained on which is of course very
  • 00:00:37
    large um but of course it's still always
  • 00:00:40
    going to be limited relative to private
  • 00:00:42
    data that you care about or for example
  • 00:00:44
    recent
  • 00:00:45
    data but there's another interesting
  • 00:00:47
    consideration is that llms have context
  • 00:00:49
    windows that are actually getting
  • 00:00:51
    increasingly large so you know coming
  • 00:00:54
    going from like thousands of tokens to
  • 00:00:56
    many thousands of tokens which
  • 00:00:58
    represents you know dozens of Pages up
  • 00:01:00
    to hundreds of pages we can fit
  • 00:01:02
    information into them from external
  • 00:01:05
    sources and a way to think about this is
  • 00:01:08
    llms are kind of a a kernel of a new
  • 00:01:10
    kind of operating system and connecting
  • 00:01:13
    them to external data is kind of a very
  • 00:01:15
    Central capability in the development of
  • 00:01:18
    this kind new emergent operating
  • 00:01:21
    system so retrieval alment to generation
  • 00:01:24
    or rag is a very popular kind of General
  • 00:01:27
    Paradigm for doing this which typically
  • 00:01:30
    involves three stages so the first stage
  • 00:01:33
    is indexing some external documents such
  • 00:01:36
    that they can be easily
  • 00:01:38
    retrieved based on an input query so for
  • 00:01:41
    example we ask a question we retrieve
  • 00:01:44
    documents that are relevant to that
  • 00:01:45
    question we feed those documents into an
  • 00:01:48
    llm in the final generation stage to
  • 00:01:50
    produce an answer that's grounded in
  • 00:01:52
    those retrieve
  • 00:01:55
    documents now we're starting from
  • 00:01:58
    scratch but we're going to kind of build
  • 00:02:00
    up to this broader view of rag you can
  • 00:02:03
    see here there's a lot of interesting
  • 00:02:06
    methods and tricks that kind of fan out
  • 00:02:10
    from those three basic components of
  • 00:02:12
    indexing retrieval and
  • 00:02:14
    generation and future videos are
  • 00:02:18
    actually going to walk through those in
  • 00:02:19
    detail we're going to try to keep each
  • 00:02:21
    video pretty short like five minutes but
  • 00:02:23
    we're going to spend a lot of time on
  • 00:02:25
    some of those more advanced
  • 00:02:27
    topics first over the next three videos
  • 00:02:31
    I'll just be laying out the very basic
  • 00:02:33
    kind of ideas behind indexing retrieval
  • 00:02:34
    and generation and then we'll kind of
  • 00:02:36
    build beyond that into those more
  • 00:02:39
    advanced
  • 00:02:40
    themes and now I want to show just a
  • 00:02:42
    quick code walkth through because we
  • 00:02:43
    want to make these videos also a little
  • 00:02:45
    bit
  • 00:02:46
    interactive so right here and this repo
  • 00:02:48
    will be shared it's public I have a a
  • 00:02:51
    notebook open and I've just just
  • 00:02:54
    basically installed a few
  • 00:02:57
    packages and I've set a few environment
  • 00:02:59
    variables for my lsmith keys which um I
  • 00:03:04
    personally do recommend it's really
  • 00:03:05
    useful for tracing
  • 00:03:07
    observability um particularly when
  • 00:03:09
    you're building rag
  • 00:03:11
    pipelines so what I'm going to show here
  • 00:03:13
    is the code for a rag quick start which
  • 00:03:15
    is linked here and I'm going to run this
  • 00:03:18
    but I'm then going to kind of walk
  • 00:03:20
    through everything that's going on so
  • 00:03:23
    actually if we think back to our diagram
  • 00:03:24
    all we're doing here is we're loading
  • 00:03:26
    documents in this case I'm loading a
  • 00:03:28
    blog post we're then splitting them and
  • 00:03:32
    we'll talk about that in future like uh
  • 00:03:34
    short videos on like why splitting is
  • 00:03:36
    important but just for now recognize
  • 00:03:38
    we're splitting them or setting a chunk
  • 00:03:40
    size of um you know a thousand
  • 00:03:42
    characters so we're splitting up our
  • 00:03:44
    documents every split is embedded and
  • 00:03:49
    indexed into this Vector store so we say
  • 00:03:51
    we picked open eye embeddings we're
  • 00:03:52
    using chromas our Vector storage runs
  • 00:03:55
    locally and now we' find this
  • 00:03:58
    retriever we then have defined a prompt
  • 00:04:01
    for
  • 00:04:02
    rag um we've defined our llm we've done
  • 00:04:05
    some minor document processing we set up
  • 00:04:08
    this
  • 00:04:09
    chain which will basically take our
  • 00:04:11
    input
  • 00:04:13
    question run our retriever to fetch
  • 00:04:15
    relevant documents put the retrieve
  • 00:04:18
    documents and our question into our
  • 00:04:19
    prompt pass it to the LM format the
  • 00:04:23
    output as a string and we can see here's
  • 00:04:24
    our
  • 00:04:25
    output now we can open up lsmith and we
  • 00:04:28
    can actually see
  • 00:04:30
    how this Ran So here was our question
  • 00:04:33
    and here's our output and we can
  • 00:04:35
    actually look here's our retriever here
  • 00:04:38
    is our retrieve documents so that's
  • 00:04:40
    pretty
  • 00:04:41
    nice and ultimately here was the prompt
  • 00:04:44
    that we actually passed into the LM
  • 00:04:47
    you're an assistant for QA task use the
  • 00:04:49
    following pieces of retrieve content to
  • 00:04:51
    answer the question here's our
  • 00:04:53
    question and then here's all the content
  • 00:04:57
    this we retrieved and that DRS
  • 00:05:00
    answer so this just gives a very general
  • 00:05:02
    overview of how rag works and in future
  • 00:05:05
    uh short videos we're going to like
  • 00:05:07
    break down each of these pieces and I in
  • 00:05:09
    in a lot more detail uh
  • 00:05:11
    thanks
标签
  • RAG
  • LLM
  • indexering
  • retrieval
  • generering
  • OpenAI
  • embedding
  • kontextfönster
  • vector store
  • dokumenthantering