새소식

반응형
AI/tutorials

LINER PDF Chat Tutorial (2)

  • -
728x90
반응형

 

VectorDB에 저장된 레퍼런스 문서를 참고해서 답변을 해주는 chatbot 만들기 (simple ver.)

 

import os
from openai import OpenAI

def pdf_chat(query: str) -> str:
    # 1. 사용자 쿼리 벡터화
    query_vector = query_embed(query)

    # 2. Hybrid Search 통해 레퍼런스 문서 반환
    query_response = index.query(
        namespace="test--pdf-chat",
        top_k=10,
        include_values=True,
        include_metadata=True,
        vector=query_vector,
        filter={
            "file": {"$in": [FILE_NAME]},
        },
    )

    reference = query_response["matches"][0]["metadata"]
    
    # 3. 프롬프트에 레퍼런스 문서 정보와 사용자 쿼리 정보 입력
    client = OpenAI()
    OpenAI.api_key = os.getenv('OPENAI_API_KEY')
    resp = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": "\n".join([
                "Your role is to answer the user's query based on the references provided.",
                "You must base your answer solely on the references, regardless of your own knowledge, and you must include the page information in your answer.",
            ])},
            {"role": "system", "content": f"reference: {reference['text']}, page: ({int(reference['page'])})"},
            {"role": "user", "content": query},
        ]
    )

    # 4. LLM 생성 답변 반환
    answer = resp.choices[0].message.content
    return answer

 

** 2번 과정에서 매칭되는 문서가 없으면 인덱스 오류가 발생하니 예외처리 필요할 것 같다.

 

 

# 확인
response = pdf_chat("What advantages do transformers have over RNNs?")
response

 

반응형

'AI > tutorials' 카테고리의 다른 글

LINER PDF Chat Tutorial  (0) 2024.03.06
한국어 텍스트 데이터 전처리  (0) 2023.04.22
키워드 추출하기 (1)  (0) 2023.04.22
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.