>기술 주변기기 >일체 포함 >LLM RAG : AI 기반 파일 리더 어시스턴트 생성

LLM RAG : AI 기반 파일 리더 어시스턴트 생성

Linda Hamilton
Linda Hamilton원래의
2025-03-04 10:40:11508검색

소개 ai는 어디에나 있습니다. 최소한 하루에 한 번 큰 언어 모델 (LLM)과 상호 작용하지 않는 것은 어렵습니다. 챗봇은 여기에 있습니다. 그들은 당신의 앱에 있고, 더 나은 글을 쓰고, 이메일을 작성하고, 이메일을 읽도록 도와줍니다. 글쎄, 그들은 많이합니다.

. 그리고 나는 그것이 나쁘다고 생각하지 않습니다. 사실, 내 의견은 다른 방법입니다. 적어도 지금까지. 나는 일상 생활에서 AI의 사용을 방어하고 옹호합니다. 구두점 문제 나 유형을 찾기 위해 문서를 두 번 읽는 데 시간을 소비 할 필요가 없습니다. AI는 나를 위해 그렇게합니다. 매주 월요일마다 후속 이메일을 쓰는 데 시간을 낭비하지 않습니다. AI는 나를 위해 그렇게합니다. 주요 테이크 아웃과 액션 포인트를 저에게 요약하기 위해 AI가있을 때 거대한 지루한 계약을 읽을 필요가 없습니다!

이들은 AI의 훌륭한 용도 중 일부일뿐입니다. LLM의 더 많은 사용 사례를 우리의 삶을 편하게 만들고 싶다면 나는 그들에 관한 책 전체를 썼습니다.

이제 데이터 과학자로 생각하고 기술적 인 측면을 바라 보면 모든 것이 밝고 반짝이는 것은 아닙니다. llms는 모든 사람이나 회사에 적용되는 여러 일반적인 사용 사례에 적합합니다. 예를 들어, 교육 컷오프 날짜까지 생성 된 일반 컨텐츠에 대한 코딩, 요약 또는 답변 질문. 그러나 특정 비즈니스 애플리케이션, 단일 목적 또는 컷오프 날짜를 만들지 않은 새로운 것, 즉 모델이

on-of-the-box

를 사용하는 경우 그다지 유용하지 않은 경우-즉, 답을 알지 못할 것입니다. 따라서 조정이 필요합니다.

LLM 모델을 훈련시키는 데 몇 개월과 수백만 달러가 걸릴 수 있습니다. 더 나쁜 것은 모델을 우리의 목적에 맞게 조정하고 조정하지 않으면 불만족스러운 결과 나 환각이있을 것이라는 점입니다 (쿼리가 주어지면 모델의 응답이 의미가없는 경우).

. 그렇다면 해결책은 무엇입니까? 데이터를 포함시키기 위해 모델을 재교육하는 데 많은 돈을 소비합니까?

실제로는 아닙니다. 그때는 검색된 세대 (RAG)가 유용 해지는 시점입니다

rag는 외부 지식 기반에서 정보를 얻는 것을 큰 언어 모델 (LLM)과 결합하는 프레임 워크입니다. AI 모델이보다 정확하고 관련성있는 응답을 생성하는 데 도움이됩니다. Rag Next에 대해 자세히 알아 보자 > 헝겊 란? 개념을 설명하기위한 이야기를 들려 드리겠습니다.

<.> 나는 영화를 좋아한다. 과거에 한동안, 나는 오스카상에서 최고의 영화 카테고리 나 최고의 배우 및 여배우에서 어떤 영화가 경쟁하고 있는지 알았습니다. 그리고 나는 그해에 어떤 ​​사람들이 동상을 얻었는지 확실히 알 것입니다. 그러나 지금 나는 그 주제에 대해 모두 녹슬 었습니다. 누가 경쟁하고 있는지 물어 본다면 알지 못할 것입니다. 그리고 내가 당신에게 대답하려고 시도하더라도, 나는 당신에게 약한 반응을 줄 것입니다.

따라서 양질의 응답을 제공하기 위해 다른 모든 사람들이하는 일을 할 것입니다. 온라인으로 정보를 검색하고 얻은 다음 귀하에게 제공합니다. 내가 방금 한 것은 헝겊과 같은 아이디어입니다. 답을 제공하기 위해 외부 데이터베이스에서 데이터를 얻었습니다.

데이터를 검색하여 (증가) 지식 기반, 즉 헝겊 프레임 워크 인 . Rag는 모델이 지식을 향상시키고보다 정확하게 반응 할 수있는 컨텐츠 저장소를 만드는 것과 같습니다.

<:> 요약 :

검색 알고리즘을 사용하여 데이터베이스, 지식 기반 및 웹 페이지와 같은 외부 데이터 소스를 쿼리합니다. 검색 된 정보를 사전 처리합니다

는 사전 처리 된 정보를 LLM에 통합합니다
<em>



> 왜 헝겊을 사용합니까? 



<know> 이제 우리는 헝겊 프레임 워크가 무엇인지 알았으므로 왜 우리가 그것을 사용해야하는지 이해해야합니다. 



<of> 다음은 다음과 같습니다. 



</of></know></em>
<ual> 실제 데이터를 참조하여 사실 정확도를 향상시킵니다



<l> Rag는 LLMS가 처리하고 지식을 통합하여보다 관련성있는 답변을 만들 수 있습니다.



<l> rag는 LLM이 내부 조직 데이터와 같은 추가 지식 기반에 액세스하는 데 도움이 될 수 있습니다.



<l> rag는 LLM이보다 정확한 도메인 별 컨텐츠를 생성하는 데 도움이 될 수 있습니다 <strong>



<reduce> Rag는 지식 격차와 AI 환각을 줄이는 데 도움이 될 수 있습니다
</reduce></strong>



<expl> 이전에 설명했듯이, 나는 Rag Framework를 사용하여 지식 기반에 추가하려는 컨텐츠에 대해 내부 검색 엔진을 제공하고 있다고 말하고 싶습니다.



<strong> 음. 그 모든 것은 매우 흥미 롭습니다. 그러나 헝겊의 적용을 보자. 우리는 AI 기반 PDF 리더 보조원을 만드는 방법을 배웁니다. </strong>



</expl></l></l></l></ual>

프로젝트 이것은 사용자가 PDF 문서를 업로드하고 AI 기반 자연 언어 처리 (NLP) 도구를 사용하여 콘텐츠에 대한 질문을 할 수있는 응용 프로그램입니다.

앱은 프론트 엔드로 간소를 사용합니다 더 나은 이해를 위해 단계를 세분화합시다 :

    PDF 파일을로드하여 텍스트 청크로 분할합니다.

  1. 이것은 데이터를 검색에 최적화합니다
    1. Present the chunks to an embedding tool.
    임베딩은 기계가 이해할 수있는 방식으로 관계, 유사성 및 의미를 포착하는 데 사용되는 데이터의 수치 벡터 표현입니다. 자연어 처리 (NLP), 추천 시스템 및 검색 엔진에 널리 사용됩니다.
  2. 다음으로, 우리는 그 텍스트 덩어리를 동일한 DB에 넣었습니다. 마지막으로, 우리는 그것을 LLM에서 사용할 수있게한다
      데이터 준비 a
    1. 컨텐츠 저장소 를 준비하면 방금 본 것처럼 몇 가지 단계가 나옵니다. 효율적인 검색을 위해 파일을로드하여 텍스트 청크로 나눌 수있는 함수를 만들어 봅시다.
    .
  3. 다음으로, 우리는 간단한 앱을 구축하기 시작하고 다음 스크립트에서 해당 함수를 사용합니다.
  4. .
  5. 웹 응용 프로그램 우리는 Python에서 필요한 모듈을 가져 오기 시작합니다. 그 대부분은 랑 체인 패키지에서 나올 것입니다.
  6. faiss는 문서 검색에 사용됩니다. OpenAiembeddings는 LLM에 의한 더 나은 유사성 계산을 위해 텍스트 청크를 수치 점수로 변환합니다. Chatopenai는 OpenAI API와 상호 작용할 수있게 해줍니다. Create_retrieval_chain은 실제로 Rag가 해당 데이터로 LLM을 검색하고 증강하는 것입니다. create_stuff_documents_chain은 모델과 chatprompttemplate
  7. 참고 :이 스크립트를 실행할 수 있으려면

를 생성해야합니다. 계정을 처음 만들 때 무료 크레딧을받을 수 있습니다. 그러나 한동안 가지고 있다면 OpenAI의 API에 액세스하려면 5 달러의 크레딧을 추가해야 할 수도 있습니다. 옵션은 Hugging Face의 임베딩을 사용하는 것입니다 이 첫 번째 코드 스 니펫은 앱 제목을 생성하고 파일 업로드를위한 상자를 만들고 load_document () 함수에 추가 할 파일을 준비합니다. 시스템은 텍스트보다 숫자를 더 잘 이해하므로 결국 쿼리를 수행 할 때 비교하고 유사성을 확인할 수있는 숫자 데이터베이스를 모델에 제공해야합니다. 그곳에서 임베딩이 다음 코드에서 vector_db를 만드는 데 유용한 곳입니다.

다음으로, 우리는 vector_db에서 탐색 할 리트리버 객체를 만듭니다.
# Imports
from  langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter

def load_document(pdf):
    # Load a PDF
    """
    Load a PDF and split it into chunks for efficient retrieval.

    :param pdf: PDF file to load
    :return: List of chunks of text
    """

    loader = PyPDFLoader(pdf)
    docs = loader.load()

    # Instantiate Text Splitter with Chunk Size of 500 words and Overlap of 100 words so that context is not lost
    text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100)
    # Split into chunks for efficient retrieval
    chunks = text_splitter.split_documents(docs)

    # Return
    return chunks
그런 다음, 우리는 LLM에 답변하는 방법에 대한 일련의 지침 인 System_prompt를 만들고, 사용자로부터 입력을 얻으면 모델에 추가되도록 프롬프트 템플릿을 만들 것입니다.

.

# Imports
from  langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter

def load_document(pdf):
    # Load a PDF
    """
    Load a PDF and split it into chunks for efficient retrieval.

    :param pdf: PDF file to load
    :return: List of chunks of text
    """

    loader = PyPDFLoader(pdf)
    docs = loader.load()

    # Instantiate Text Splitter with Chunk Size of 500 words and Overlap of 100 words so that context is not lost
    text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100)
    # Split into chunks for efficient retrieval
    chunks = text_splitter.split_documents(docs)

    # Return
    return chunks
계속 움직이면, 우리는 래그 프레임 워크의 핵심을 만들어 리트리버 객체와 프롬프트를 함께 붙입니다. 이 객체는 데이터 소스 (예 : 벡터 데이터베이스)의 관련 문서를 추가하고 응답을 생성하기 위해 LLM을 사용하여 처리 할 준비를합니다.

마지막으로, 우리는 사용자 입력에 대한 변수 질문을 만듭니다. 이 질문 상자가 쿼리로 채워져 있으면 LLM을 호출하여 응답을 처리하고 반환하여 앱의 화면에 인쇄됩니다.

다음은 결과의 스크린 샷입니다
# Imports
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings
from langchain.chains import create_retrieval_chain
from langchain_openai import ChatOpenAI
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_core.prompts import ChatPromptTemplate
from scripts.secret import OPENAI_KEY
from scripts.document_loader import load_document
import streamlit as st
그리고 이것은 당신이 파일 리더 ai 어시스턴트를 볼 수있는 gif입니다!

.

당신이 가기 전에 이 프로젝트에서, 우리는 래그 프레임 워크가 무엇인지, 그리고 LLM이 더 잘 수행하고 특정 지식으로 잘 수행하는 데 도움이되는 방법을 배웠습니다. AI는 명령 매뉴얼, 회사의 데이터베이스, 일부 금융 파일 또는 계약의 지식으로 구동 할 수 있으며 도메인 별 컨텐츠 쿼리에 정확하게 응답 할 수 있도록 미세 조정됩니다. 지식 기반은 enucmented 컨텐츠 저장소입니다 요약하자면 이것이 프레임 워크의 작동 방식입니다 : 1️ 1
# Create a Streamlit app
st.title("AI-Powered Document Q&A")

# Load document to streamlit
uploaded_file = st.file_uploader("Upload a PDF file", type="pdf")

# If a file is uploaded, create the TextSplitter and vector database
if uploaded_file :

    # Code to work around document loader from Streamlit and make it readable by langchain
    temp_file = "./temp.pdf"
    with open(temp_file, "wb") as file:
        file.write(uploaded_file.getvalue())
        file_name = uploaded_file.name

    # Load document and split it into chunks for efficient retrieval.
    chunks = load_document(temp_file)

    # Message user that document is being processed with time emoji
    st.write("Processing document... :watch:")
사용자 query

→ 입력 텍스트가 수신됩니다 2️ 2

관련 문서 검색 → 지식 기반을 검색합니다 (예 : 데이터베이스, 벡터 스토어). 3ø 3️ 3 LLM RAG : AI 기반 파일 리더 어시스턴트 생성 encment context

→ 검색된 문서가 입력에 추가됩니다. 4️ 4 4

응답 생성 LLM RAG : AI 기반 파일 리더 어시스턴트 생성 → LLM은 결합 된 입력을 처리하고 답을 생성합니다. github 리포지토리 https://github.com/gurezende/basic-rag

나에 대해 이 콘텐츠를 좋아하고 내 작품에 대해 더 배우고 싶다면 여기 내 웹 사이트가 있습니다. 여기서 내 모든 연락처를 찾을 수 있습니다. https://gustavorsantos.me

참조 https://cloud.google.com/use-cases/retrieval-augmented-generation https://www.ibm.com/think/topics/retrieval-augmented-generation https://youtu.be/t-d1ofcdw1m?si=g0uwfh5-wznmu0nw https://python.langchain.com/docs/introduction https://www.geeksforgeeks.org/how-to-get-your-own-openai-api-key

위 내용은 LLM RAG : AI 기반 파일 리더 어시스턴트 생성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.