목록Python (13)
가수면
퓨전 RAG (Fusion RAG)여러 출처나 관점의 정보를 합성해 응답을 만드는 고급 모델이다. 서로 다른 데이터셋이나 보완적이거나 대조적인 정보를 포함한 여러 출처 문서를 사용할 때 특히 유용하다. 이 모델은 여러 소스에서 데이터를 검색한 다음 생성 모델을 사용해 다양한 입력을 균형 잡힌 출력으로 통합한다.다양한 관점과 데이터셋을 활용하는 비즈니스 전략이나 정책 수립과 같은 복잡한 의사 결정 프로세스에 유용하다. 단일 데이터에 의존할 경우 발생할 수 있는 편견 문제를 해결한다. 반면, 정보 과부하나 상충하는 데이터로 인한 위험도 따른다. 따라서 출력의 일관성이나 정확성을 손상하지 않으면서 다양한 입력을 균형 있게 조정해야 한다는 과제가 있다.https://arxiv.org/abs/2402.03367 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/XLgLx/btsL3igXPNy/PnNdtaGwWGO4s4Xf4o6qy1/img.png)
추측 RAG(Speculative RAG)추측 RAG는 검색된 데이터가 부족하거나 모호할 때 모델이 추측을 통해 응답하도록 유도하는 방식이다. 완전한 정보를 사용할 수 없지만 시스템이 여전히 유용한 응답을 제공해야 하는 시나리오를 처리하도록 설계됐다. 추측을 통해 모델은 검색된 데이터의 패턴과 이미 학습한 광범위한 지식을 바탕으로 그럴듯한 결론을 생성할 수 있다.이 방식은 완전히 정확한 결과를 내놓지는 않는다. 하지만, 확실성이 필요하지 않은 의사 결정 프로세스에서 여전히 가치를 제공할 수 있다. 예를 들어, 재무나 마케팅 등에서 초기 아이디어를 발굴하는 과정에 도움을 줄 수 있다.물론, 사실적 결론보다는 가설을 생성하도록 설계됐기 때문에, 사용자는 이에 주의할 필요가 있다. https://arxiv.o..
수정 RAG(Corrective RAG)수정 RAG 모델은 표준 RAG를 기반으로 구축되지만, 생성된 응답의 잠재적 오류나 불일치를 수정하도록 설계된 계층을 추가한다. 검색 및 생성 단계 후 수정 메커니즘을 사용해 생성된 출력의 정확성을 확인하는 식이다. 검색된 문서의 추가 참조나 모델의 미세 조정, 모델이 출력을 자체 평가하는 피드백 루프 구현을 통하는 식이다. 수정 RAG는 의료나 법률, 과학과 같이 고도의 정확성이 필요한 분야에서 유용하다. 생성 단계를 개선하고 가장 신뢰할 수 있는 출처와 출력을 일치해 모델 응답에 대한 신뢰를 강화한다. https://arxiv.org/abs/2401.15884 Corrective Retrieval Augmented GenerationLarge language m..
LLM 기본 원리몇 개의 단어가 차례로 모인 것을 문장이라고 한다.이 특성대로 다음에 올 단어들 중 가장 확률이 높은 단어를 선택하는 방식을 통해 차례대로 단어를 배치함 (다음 단어가 무엇인지 추측)자동 완성 기능과 유사한 방식이다. (lang을 검색하면 chain이 자동 완성 목록에 뜨는 식)프롬프트의 구성 요소1. 명령어어떤 작업을 수행해야하는지ex) 번역2. contextAI 모델이 작업을 더 잘 이해하고 더 정확한 응답을 생성하는 데 도움이 되는 추가 정보context 제공를 통해 ai 결과값(성능)을 크게 향상시킬 수 있음ex) 대화 상황, 맥락 등3. 입력 데이터AI 모델이 처리해야할 정보ex) 번역해야할 문장4. 출력 표시기기대하는 응답 형태명령어에 포함되어 있는 경우도 있음ex) 출력 포맷..
다수의 문서 등 대량의 데이터를 프롬프트로 전달해야할 경우 토큰 처리map reduce chain랭체인 예시)chain = load_summarize_chain(llm, chain_type="map_reduce")1. 여러 문서에 대해 각각의 문서를 요약하는 요청을 병렬 처리2. 각각의 요약 결과들을 하나로 모아서 재요약 요청단점:1. 요청이 많아지니 비용문제 발생2. 정보 손실 refine chain문서를 하나 하나 중첩 요약해가며 정보의 정확성을 높이는 방법랭체인 예시) chain = load_summarize_chain(llm, chian_type="refine")1. '빈 값 + 첫 문서' 요약2. '1번 요약 + 두 번째 문서' 요약3. '2번 요약 + 세 번째 문서' 요약...대화 세션 유지를..
구현 방법구현 방식의 기본 개념 및 필요 요소들은 다음과 같다. 1. tool로 사용할 함수를 정의한다. 이때, 함수명과 설명을 잘 적는 것이 중요하다.예시)def get_text_length(text: str) -> int: """Returns the length of a text by characters"""2. 에이전트 프로세스를 실행시킬 프롬프트를 작성한다. 2-1. 이때 프롬프트에는 tool의 이름/설명과 tool 목록을 전달하여 LLM이 선택할 수 있도록 한다. 2-1. 최종 프롬프트의 주요 구성 사항은 다음과 같다. tools 제시 및 설명포맷 지정 명령Question: 사용자의 질문Thought: 에이전트가 무엇을 할지Action: 특정 작업을 수행 지시 (알맞은 tool 고르기)A..
langchain 로더 - https://github.com/langchain-ai/langchain/tree/master/libs/langchain/langchain/document_loaders langchain/libs/langchain/langchain/document_loaders at master · langchain-ai/langchain🦜🔗 Build context-aware reasoning applications. Contribute to langchain-ai/langchain development by creating an account on GitHub.github.comText Splitter - llm의 경우 한번에 보낼 수 있는 토큰 제한이 있어 큰 텍스트를 청크로 나누는..
LLM 애플리케이션 기본 구현 방식from langchain.prompts.prompt import PromptTemplatefrom langchain_openai import ChatOpenAIfrom langchain_core.output_parsers import StrOutputParserfrom third_parties.linkedin import scrape_linkedin_profilesummary_template = """링크드인의 유저 정보를 줄테니 아래 요구사항에 맞춰 답변을 생성해주세요.1. 짧은 요약2. 흥미로운 사실 2가지{information}"""summary_prompt_template = PromptTemplate( input_variables=["information..
덱(deque)from collections import deque 양쪽 끝에서 아이템을 추가하거나 삭제할 수 있는 양방향 큐append(x): 오른쪽 끝에 아이템 x를 추가합니다.appendleft(x): 왼쪽 끝에 아이템 x를 추가합니다.pop(): 오른쪽 끝의 아이템을 제거하고 반환합니다.popleft(): 왼쪽 끝의 아이템을 제거하고 반환합니다.extend(iterable): 오른쪽 끝에 주어진 iterable의 모든 아이템을 추가합니다.extendleft(iterable): 왼쪽 끝에 주어진 iterable의 모든 아이템을 역순으로 추가합니다.힙큐(heapq)import heapq heapq는 일반적인 리스트를 최소 힙, 최대 힙처럼 사용할 수 있게 해줌우선순위 큐와 최소값, 최대값을 구할 때 ..
반복문 한 줄로 표기list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]test = [i for i in list]test// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]test = [ 0 for index in range(6)] // test = [0] * 6test// [0, 0, 0, 0, 0, 0] 반복문과 조건문 합쳐서 사용하기if node in visited // visited에 node가 있으면if node not in visited // visited에 node가 없으면 comprehension [i for i in mylist (조건문)]list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]test = [i for i in list i..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/U7shz/btrPf41cu9S/VlKDiNUmCmUGozfvtx2Ky0/img.png)
-자바스크립트 코드들- *홈페이지 로딩 후 실행* $(document).ready(function () { listing(); }); *반복 함수*let star_image = '⭐'.repeat(star)star만큼 반복 -python 문법- · 파이썬은 let 붙일 필요 없음· 파이썬은 중괄호 필요 없음. : 찍고 탭(탭 해서 들여 쓴 것들이 내용물) *python 리스트 추가*a_list = []a_list.append(1) # 리스트에 값을 넣는다a_list.append([2,3]) # 리스트에 [2,3]이라는 리스트를 다시 넣는다 *크롤링(홈페이지에서 html 가져오기) 기본 세팅*import requestsfrom bs4 import BeautifulSouph..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bYzgjC/btrO31jgwdA/5iZRc4iKiELDgeMr263ErK/img.png)
-Flask-*경로 만들기 (구조)*static 폴더 (이미지, css파일을 넣어둡니다.)templates 폴더 (html 파일을 넣어둡니다.)*파일 만들기*app.pyindex.html (templates 폴더)*패키지 설치*flaskpymongodnspython(크롤링이 필요하다면 requests와 bs4도 설치) *연습*'응원 남기기' 버튼을 누르면 그 결과를 서버에 저장하고 밑에 댓글로 나타내기 1. POST방식(서버에 저장) 설정아래의 클라우드(mongo DB) pymongo 패키지 양식을 app.py상단에 붙이기from pymongo import MongoClientclient = MongoClient('mongodb+srv://test:@cluster0.q4umm5t.mongodb.net/?..
-파이썬- 우클릭 후 실행 권장(상단의 실행이나 실행창의 실행 버튼을 누를 경우 다른 파일이 실행될 수가 있음) *문자열 더하기* a = 2 b = 1 print(a+b) 3 a = 'jihyeon' b = 'choi' print(a+b) jihyeonchoi *리스트* a_list = ['사과','배','감'] print(a_list[0]) 사과.index(값)값에 해당하는 index를 반환. 시간복잡도 n *자바스크립트, 파이썬 리스트 추가* a_list = ['사과','배','감'] a_list.append('수박') 자바스크립트에선 .push print(a_list) ['사과', '배', '감', '수박'] .extend()append는 하나로 추가하는데 extend는 전부를 추가함a = ['Ti..