
LLM의 가장 강력한 응용 중 하나는 특정 소스 정보를 기반으로 정확한 답변을 제공 할 수있는 정교한 질문 응답 (Q & A) 챗봇을 만드는 것입니다. 이 프로젝트는 RAG (Restrieval-Augmented Generation)로 알려진 기술을 사용하여 오픈 소스 C ++ 유한 요소 라이브러리 인 Deal.ii Library를 개발하는 데 중점을 둡니다. 데이터 세트는 공식 거래에서 사용 가능한 90 개의 튜토리얼 단계에서 제공됩니다. 여기에서 액세스 할 수 있습니다. LLM (Large Language Model) 엔진은 Cohere에서 제공하며 임베딩 및 채팅 서비스를위한 고품질 LLM 모델을 제공하는 것으로 알려져 있습니다. 벡터 데이터베이스의 경우 벡터 검색 및 검색의 오픈 소스 특성, 속도 및 효율성으로 인해 Chroma를 선택했습니다. Langchain 프레임 워크는 사용자의 입력, 쿼리 처리 및 벡터 데이터베이스의 관련 정보 검색 간의 상호 작용을 효율적으로 관리하는 데 사용되어 모델의 다양한 구성 요소 간의 완벽한 통합을 보장합니다.
데이터베이스를 준비하는 프로세스는 다음과 같습니다. 첫째, 튜토리얼 페이지는 웹 사이트에서 Langchain 문서 개체로 검색됩니다. 액세스 속도를 개선하기 위해 (테스트 시간 동안)이 문서 개체는 로컬 디스크의 JSON 파일로 저장됩니다. 다음으로, 문서는 적절한 크기의 덩어리로 나뉩니다 (40 개의 토큰이 겹치는 덩어리 당 약 400 개의 토큰). 전체적으로 데이터 세트는 230 만 개의 토큰으로 구성됩니다. 마지막 으로이 분할 문서는 벡터 데이터베이스에 포함됩니다.
이 모델은 4 개의 체인과 3 개의 프롬프트 템플릿을 사용하여 구축됩니다.
체인 재구성 :이 체인은 사용자의 질문과 대화 기록을받은 다음 이전 대화에 따라 질문을 재구성합니다. 예를 들어, 첫 번째 질문이 "Fe_nothing이란 무엇입니까?"라는 것입니다. 두 번째 질문은 "어디에서 사용할 수 있습니까?"입니다. 개혁 체인은 "Fe_Nothing을 어디에서 사용할 수 있습니까?"에 대한 두 번째 질문을 수정합니다. 이 단계는 본질적으로 대화에 메모리를 추가하여 컨텍스트 연속성을 보장합니다.
다중 질문 체인 :이 체인은 재구성 된 질문을 제기하고 다섯 가지 유사한 질문을 생성하여 여러 관점을 제공합니다. 간단한 람다 함수를 사용하여 파이썬 질문 목록을 출력하고 최종 단계로 remove_empty_string 함수를 사용하여 빈 줄이 제거됩니다.
검색 체인 :이 체인은 이전 체인에서 5 가지 질문을 받아 벡터 데이터베이스를 쿼리합니다. 벡터 데이터베이스는 유사한 벡터를 검색하고 관련 문서를 검색합니다. 다른 질문에 대해 동일한 문서를 여러 번 검색 할 수 있으므로 get_unique_union 함수를 마지막 단계로 사용하여 고유 한 문서 세트가 작성됩니다.
RAG Chain :이 체인은 최종 답변을 생성하기위한 컨텍스트로 질문, 대화 기록 및 이전 체인에서 검색된 문서를 사용합니다.
응용 프로그램의 프론트 엔드는 Gradio의 ChatInterface 사용하여 구축되며 출력을 실시간으로 스트리밍하도록 설계된 응답 기능이 있습니다. 응용 프로그램은 포옹 페이스 공간에 배치되며 여기에서 액세스 할 수 있습니다.