인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

JAY probio님의 프로필 이미지

작성한 질문수

RAG를 활용한 LLM Application 개발 (feat. LangChain)

수강평 작성하신 분들을 대상으로 무료 멘토링을 진행합니다!

rag 데이터 가져오는 부분에서 질문드립니다!

작성

·

112

0

안녕하세요 강사님

정해져있는 문서를 Rag로 가져오는것이 아닌

openAPI에서 필요한 정보를 호출해서 가져오도록 만들고 싶습니다.

openAPI에 requests로 호출해서 데이터를 가져오는 부분까지 완성했습니다.

수업중에 llm에게 dictionary 지정해주는것처럼

openAPI에서 호출한 정보를 rag로 가져오도록 하는 방법을 가르쳐주세요

감사합니다

답변 3

1

강병진님의 프로필 이미지
강병진
지식공유자

안녕하세요! OpenAPI를 활용해서 가져온 데이터를 prompt에 넣어주시고 LLM을 호출하시면 됩니다. pseudo code로 가볍게 보여드리자면

 

system_prompt = """<Context>{open_api_response}</Context>

<Context>에 있는 내용을 참조해서 사용자 질문에 답변해주세요
"""

chat_prompt = ChatPromptTemplate.from_messages([
    ("system", system_prompt),
    ("human", '{question}')
    ])

llm_chain  = (
         chat_prompt    # 프롬프트 템플릿에 정보 전달
        | llm                 # LLM으로 계산 수행
        | StrOutputParser()   # 결과를 문자열로 변환
    )

llm_chain.invoke({"open_api_response": <OpenAPI response>, "question": "사용자 질문"})

0

JAY probio님의 프로필 이미지
JAY probio
질문자

강사님 답변 감사합니다.

제상황은 openAPI 에 있는 context를 전부 가져와서 사용하는것이 아니고

필요한 정보를 api 요청을 통해 가져온 다음에 LLM에서 사용하도록 만들고 싶습니다.

요청해서 가져와서 데이터 정체하는 함수까지는 다 만들어놨습니다.

llm에서 함수를 제대로 호출하지 않고 답변해서 내용이 만족스럽지 않습니다ㅜ

강병진님의 프로필 이미지
강병진
지식공유자

아아 함수를 LLM을 활용해서 호출하시는거면 도구로 등록해서 사용하시는걸까요?

JAY probio님의 프로필 이미지
JAY probio
질문자

맞습니다!!

JAY probio님의 프로필 이미지
JAY probio
질문자

조금만 더 욕심내자면.. 이미 조회한 데이터는 벡터db에 저장해서 매번 api호출없이 빠르게 조회가 가능할까요?

강병진님의 프로필 이미지
강병진
지식공유자

도구 호출에 문제가 있는거면 도구 이름, 설명, 인자들의 설명을 조금 더 자세히 작성하셔야 할 것 같고, 이미 데이터를 잘 가져온다면 굳이 임베딩을 하지 않아도 되지 않을까 생각합니다. 임베딩이나 데이터 저장도 다 추가비용이니까요~

JAY probio님의 프로필 이미지
JAY probio
질문자

감사합니다!! 해보니까 잘 안되긴하는데, 제가 아직 많이 부족합니다 ㅎㅎㅎ 강사님 다른 강의도 듣고와서 다시 질문드리겠습니다!!

강병진님의 프로필 이미지
강병진
지식공유자

네네 도구 활용은 도구를 조금 더 자세히 작성하고 프롬프트에 어떤 도구들이 어떤 역할을 하는지 조금 자세히 작성해보시면서 테스트 하는 것을 추천드립니다!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. JAY probio님.

RAG를 사용하는 과정에서 OpenAPI를 통해 데이터를 가져와 활용하고자 하신다고 하셨습니다. 이는 기존의 정해진 문서가 아닌 동적으로 필요한 정보를 가져오는 방식으로 매우 유용하게 사용될 수 있습니다. 이를 위해 몇 가지 단계를 제안드립니다.

  1. 데이터 구조화: OpenAPI를 통해 가져온 데이터는 일반적으로 JSON 형식의 데이터입니다. 이 데이터를 사용하기 쉽도록 파이썬의 딕셔너리 형태로 변환합니다.

  2. 벡터화 준비: 가져온 데이터를 RAG 시스템에서 벡터화하려면 데이터를 적절히 전처리해야 합니다. 이는 텍스트 데이터일 경우 문장이나 키워드 단위로 처리하여 벡터화할 수 있도록 준비하는 것입니다.

  3. RAG에 통합: LLM을 활용하여 딕셔너리 형태의 데이터를 RAG 시스템에 통합하는 방법은, LLM에 데이터를 전달할 때 프롬프트의 일부분으로 포함시키는 것입니다. 이 과정에서 적절한 프롬프트 엔지니어링 기법을 활용해 질문에 대한 배경 정보를 전달하세요.

  4. 적절한 프롬프트 생성: 응답을 생성할 때 필요한 데이터를 프롬프트에 포함시키는 방법은, LLM이 제공받은 데이터를 바탕으로 context를 구성할 수 있게 도와주는 역할을 합니다. 이를 통해 사용자가 필요한 정보를 학습된 방식으로 출력할 수 있습니다.

이러한 방법들을 통해 OpenAPI에서 호출한 데이터를 효과적으로 RAG 시스템에 통합할 수 있습니다. 추가적으로 관련 질문에 대한 강사님의 답변을 확인하시면 도움이 되실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.