Dify 탱자탱자 4탄은 3탄에 이어지는 후속편의 글이며, 작은 삽질 기록입니다.
ChatGPT에게 "사람이 여유있게 삽질하는 모습을
지브리 풍으로 코믹하게 그려줘.
삽은 작은 크기의 삽으로 해줘" 라고 했더니 이런 그림을 그려주네요
근육질로 작업하면 좀 여유있다라고 생각했나 봅니다. 풉....
어쨋거나 저쨋거나 저도 운동하니 저 정도는 끄덕여집니다.
Dify에서 크롤링으로 지식 구축 하다가 늪에 빠져 스터디장님께 해결책을 SOS 쳤더니
1:1 온라인 미팅이라는 특단의 조치를 내리십니다.
2시간 반 동안 Dify, RAG, Orchestration, 컴퓨터 사양, Docker,
Dify 사용법 및 구축 방법 등에 관한 특강을 들었습니다.
그리고 제가 처한 문제를 해결하는 방법도 같이 고민해 주셔서
해법을 찾았습니다.
자, 그럼 이제 문제를 파해하러 가봐야죠!
Let's go~
목표: n8n docs를 Knowledge로 구축하여
이를 바탕으로 대답하는 n8n 사용자 도우미 봇을 만들자!
(n8n 사용 시, 초보자라 무엇을 어떻게 해야 하는지 몰라서
매번 n8n docs(영어로 되어 있어서 읽기도 힘듬)와
Perplexity AI에게 캡쳐 떠서 물어보던 어려움이 서러워서(?)
챗봇을 만들어서 간단하게 물어보고 도움을 받으면 좋겠다라고 생각하였음)
n8n docs가 github에 최신 판으로 문서 형태로 올라와 있다라는
스터디장님의 조언을 따라서
Github에 가서 압축 파일을 다운로드 받습니다.
Markdown 파일로 되어 있는데 파일 한 개당 사이즈는 몇 kb에 불과해서
파일 용량 크기 제한에는 걸리지 않습니다.
다만, 개수가 몇 개인지가 관건인데
(제 플랜 기준으로는 500개를 넘을 수 없습니다.)
일일이 개수 확인을 할 수가 없어서 일단 진행합니다.
n8n docs와 비교 해보니 내용은 같은데
n8n docs 사이트의 구성과 달라서 좀 헷갈리고
개수가 228개가 맞을지 예측이 잘 안됩니다.
파일로 Knowledge에 올리고 다음 단계로 넘어갈 때에도
한 번에 20개라는 제한이 있네요
그래서 수작업으로 n8n docs를 돌아다니면서
20개씩 선택해서 처리합니다.
Knowledge 작업에만 2시간 정도 소요된 것 같습니다.
완전 쌩 노가다....
Knowledge 구축만 끝나면 뒷단의 챗봇 구성은 금방 끝나더군요.
모든 작업은 Perplexity AI의 자문을 받아가며
(실은 캡쳐 떠서 알려달라고 구걸했어요...😂 😂 )
이런 모르는 AI를 배워가며 작업을 할 때에는
경험상 Perplexity가 제일 도움 많이 되는 것 같습니다.
진행 과정
1단계:
파일을 20개씩 올리면 제대로 올라갔다고 초록불이 들어오면서
다음 단계로 넘어갈 수 있게 됩니다.
에러가 나면 아예 다시 진행하니 되더군요.
2단계:
첫번째 boss를 만납니다. 보스를 격파하기 위해 Perplexity에게 도움을 요청하니,
청크 설정 각 항목 설명
1. 세그먼트 식별자 (WnWn)
뭐하는 거야?
문서를 나눌 때 "여기서 잘라!" 하는 신호같은 거예요
예를 들어, 책을 페이지별로 나누듯이 긴 글을 작은 조각으로 나누는 기준이에요
추천 설정: \n\n
(기본값 유지)
n8n 문서는 문단별로 나누는 게 가장 자연스러워요
2. 최대 청크 길이 (1024 characters)
뭐하는 거야?
한 조각(청크)이 최대 몇 글자까지 들어갈 수 있는지 정하는 거예요
너무 길면 AI가 헷갈리고, 너무 짧으면 내용이 부족해져요
추천 설정: 800
characters
n8n 문서는 코드와 설명이 섞여있어서 1024자보다 조금 짧게 하는 게 좋아요
800자 정도면 한 문단과 코드 예시를 적절히 포함할 수 있어요
3. 청크 중첩 (50 characters)
뭐하는 거야?
책장을 넘길 때 앞 페이지의 마지막 줄을 다음 페이지 첫 줄에 다시 적어놓는 것 같은 거예요
문맥이 끊어지지 않게 조금씩 겹치게 만드는 거예요
추천 설정: 100
characters
n8n 문서는 단계별 설명이 많아서 앞뒤 연결이 중요해요
100자 정도 겹치면 "이전 단계에서..."같은 연결 부분을 놓치지 않아요
4. 텍스트 전처리 규칙
연속된 공백, 줄바꿈, 탭을 대체합니다 ✅
뭐하는 거야?
글에서 띄어쓰기가 너무 많거나 줄바꿈이 이상한 걸 깔끔하게 정리해주는 거예요
추천 설정: 체크 유지 (✅)
n8n 문서는 웹에서 가져온 거라 공백이 엉망일 수 있어요
모든 URL과 이메일 주소를 제거합니다 ☐
뭐하는 거야?
글 속에 있는 인터넷 주소나 이메일을 다 지워버리는 거예요
추천 설정: 체크 안 함 (☐)
n8n 문서에는 중요한 링크들이 많아서 지우면 안 돼요
API 주소나 GitHub 링크 등이 중요한 정보가 될 수 있어요
최종 추천 설정 요약
설정 항목
추천값
이유
세그먼트 식별자
\n\n
(기본값)
문단 단위로 자연스럽게 분할
최대 청크 길이
800
characters
코드+설명을 적절히 포함
청크 중첩
100
characters
단계별 설명의 연결성 보장
공백/줄바꿈 정리
✅ 체크
웹 문서 정리 필요
URL/이메일 제거
☐ 체크 안 함
중요한 링크 정보 보존
부모-자식 모드는?
뭐하는 거야?
작은 조각(자식)으로 검색하고, 찾으면 큰 조각(부모)을 가져오는 방식이에요
더 정확한 검색이 가능해요
추천: n8n 문서에는 굳이 필요 없어요. 일반 모드로 충분해요!
세그먼트 식별자의 주요 종류와 정의
1. \n\n (두 번 줄바꿈)
정의:
문단이 끝나고 한 줄을 더 띄울 때(빈 줄), 그 부분에서 문서를 나눠요.기능:
글을 문단 단위로 잘라서, 한 덩어리(청크)에 한 문단이 들어가게 해줘요.언제 사용?
설명서, 블로그, 튜토리얼처럼 문단이 중요한 문서에 좋아요.
2. \n (한 번 줄바꿈)
정의:
줄이 바뀔 때마다(엔터를 한 번 칠 때마다) 문서를 나눠요.기능:
한 줄씩 잘게 쪼개서, 코드나 표처럼 한 줄이 중요한 문서에 적합해요.언제 사용?
코드 예시, 표, 리스트가 많은 문서에 좋아요.
3. 특정 구분자(예: ###, ---, *)
정의:
제목이나 구분선 같은 특별한 기호가 나올 때마다 문서를 나눠요.기능:
큰 제목이나 섹션이 바뀔 때마다 청크가 나뉘어서,
목차처럼 구조를 잘 살릴 수 있어요.언제 사용?
마크다운 문서, 기술 문서 등에서 많이 써요.
4. 고정 글자 수/토큰 수
정의:
글자나 토큰(단어 비슷한 단위)이 일정 개수마다 문서를 나눠요.기능:
내용과 상관없이 일정한 크기로 잘라서,
AI가 처리하기에 딱 좋은 크기로 맞춰줘요.언제 사용?
내용이 다양하고, 문단/제목 구분이 애매한 문서에 사용해요.
각 식별자의 기능 정리
식별자 종류
정의 및 기능
추천 사용 상황
\n\n
문단 단위로 나눔
설명서, 튜토리얼, 블로그
\n
한 줄 단위로 나눔
코드, 표, 리스트 많은 문서
###, ---, *** 등
제목/구분선 등 특정 기호에서 나눔
마크다운, 기술문서, 목차 구조 강조
고정 글자/토큰 수
일정한 크기로 나눔
구조가 애매하거나 다양한 문서
n8n 공식 문서에 추천하는 식별자
\n\n
(두 번 줄바꿈)
→ 문단 단위로 잘라서, 설명과 코드 예시가 자연스럽게 묶이도록 해줍니다.
→ n8n 공식 문서처럼 설명 위주 문서에 가장 적합합니다.
\n\n, 최대 길이 800, 중첩 100 선택하고 프리뷰 청크 선택합니다.
청킹이 어떻게 되는지 잘 볼 수 있어서 좋습니다.
다음으로는
이건 또 모야? Perplexity에게 도움 요청합니다.
임베딩 모델이란?
임베딩 모델은 글(문서, 문장, 단어 등)을 컴퓨터가 이해할 수 있는 숫자(벡터)로 바꿔주는 똑똑한 번역기야!
이 숫자 덩어리(벡터) 덕분에 AI가 "비슷한 내용"을 빠르게 찾아낼 수 있어.
예시:
"n8n에서 워크플로우 만드는 법"이라는 글을 임베딩 모델이 숫자로 바꿔주면,
사용자가 "자동화 만들기"라고 검색해도 관련 내용을 쉽게 찾아줘.
임베딩 모델 추천
OpenAI의 text-embedding-3-small 또는 text-embedding-ada-002
→ 빠르고, 정확하고, 비용도 저렴해.
→ Dify 기본값으로 제공되는 경우가 많아.한국어가 많다면:
BGE-base, KoSimCSE 등 한국어 특화 모델도 고려할 수 있지만,
n8n 공식 문서는 영어가 주라 OpenAI 모델이 더 무난해.
text-embedding-3-large의 특징
더 크고 똑똑한 임베딩 모델
최대 3072 차원의 벡터(숫자 집합)로 텍스트를 표현합니다6.
더 많은 정보를 담을 수 있고, 의미 파악이 더 정확해집니다.
성능
용도
복잡한 검색, 고품질 추천, 문서 분류, 의미 기반 유사 문서 찾기 등에 적합합니다4.
비용
더 똑똑한 만큼, text-embedding-3-small보다 비용이 조금 더 높습니다
그래서 이해 완료 후, 하라는 대로 설정합니다.
다음으로는
이건 또 무엇? 역시 물어봅니다.
용어 매칭표
Dify 용어
검색 방식(일반 용어)
설명
고정형(Stuff)
전체 텍스트 검색 (Full-text)
여러 청크(조각)를 한 번에 LLM에게 보내서 몽땅 읽고 답을 찾음. 문서가 적을 때 적합. 5
맵-리듀스(Map-Reduce)
벡터 검색 (Vector Search)
리트리버-리랭커(Retriever-Reranker)
하이브리드 검색 (Hybrid Search)
벡터 검색(의미 기반) + 키워드 검색(정확한 단어 일치) 결합. 관련성 높은 결과를 리랭커가 재정렬. 47
상세 설명
1. 고정형(Stuff) = 전체 텍스트 검색
전체 텍스트(Full-text) 검색이란?
문서의 모든 내용을 한 번에 LLM에게 보내서, 키워드 일치나 전체 내용 기반으로 답을 찾는 방식이에요.특징:
문서가 적을 때 빠르고 간단.
키워드 중심의 검색.
추천 상황:
데이터가 아주 적거나, 단순한 FAQ 챗봇 등.
2. 맵-리듀스(Map-Reduce) = 벡터 검색
벡터 검색(Vector Search)이란?
문서와 질문을 모두 "숫자 벡터"로 바꿔서,
의미적으로 비슷한 청크(조각)를 찾아주는 방식이에요.
LLM이 여러 조각을 각각 요약(Map)하고, 다시 합쳐서(Reduce) 답을 만듭니다.특징:
의미 기반 검색(단어가 달라도 비슷한 뜻이면 찾아줌).
대용량 데이터에 강함.
추천 상황:
기술 문서, 다양한 질문에 유연하게 답해야 할 때.
3. 리트리버-리랭커(Retriever-Reranker) = 하이브리드 검색
하이브리드 검색(Hybrid Search)이란?
벡터 검색(의미 기반)과 키워드 검색(정확한 단어 일치)을 결합해서,
두 방식의 장점을 모두 살리는 최신 검색 방식이에요.
먼저 리트리버가 관련 청크를 뽑고, 리랭커가 더 똑똑하게 순위를 정해요.47특징:
검색 품질이 가장 높음.
구글, 네이버 등 최신 검색 엔진도 이 방식을 씀.
추천 상황:
문서가 많고, 정확한 답이 중요한 기술 문서/헬프데스크/챗봇 등.
n8n docs에는 어떤 걸 선택해야 할까?
리트리버-리랭커(하이브리드 검색)
→ 문서가 많고, 질문이 다양하며, 정확한 답변이 중요하므로
→ 최고의 검색 품질을 원하면 이 모드를 추천합니다!
이해 완료 후, 리트리버-리랭커를 선택하고 싶었으나
돈이 상대적으로 많이 든다고 하니
스터디장님 추천대로
리트리버-가중 점수로 선택합니다.
(참고로 재랭크 모델을 사용하려면 재랭크를 해줄 도구를 선택해야 하고,
외부 API로 연결 설정을 해야 하더군요, Cohere로 설정을 하긴 했습니다.)
1. 가중 점수
무엇이냐면?
"AI야, 의미가 비슷한 걸 더 중요하게 볼래? 아니면 단어가 똑같은 걸 더 중요하게 볼래?"
이렇게 둘 사이에 점수를 나눠서,
어떤 걸 더 우선할지 정하는 거야.예시:
의미론적 0.7, 키워드 0.3이면
"뜻이 비슷한 내용"을 더 중요하게 생각하고,
단어가 똑같은 건 조금 덜 중요하게 보는 거야.
2. 재랭크 모델
무엇이냐면?
"AI야, 일단 관련 있는 문서를 뽑아온 다음에
너가 한 번 더 똑똑하게 순서를 다시 정해줘!"
즉, AI 가 한 번 더 생각해서
진짜로 중요한 순서대로 문서를 보여주는 거야.
3. 의미론적/키워드 슬라이더
무엇이냐면?
파란색 막대를 움직이면
"뜻이 비슷한 것"과 "단어가 똑같은 것" 중
무엇을 더 중요하게 볼지 숫자로 정할 수 있어.추천값:
의미론적 0.7, 키워드 0.3
(뜻이 비슷한 걸 더 중요하게 보는 게
n8n 문서처럼 설명이 많은 문서에 좋아!)
4. 상위 K
무엇이냐면?
"AI야, 한 번에 몇 개의 문서를 뽑아올까?"
예를 들어 3이면, 관련성 높은 문서 3개만 먼저 뽑아와.추천값:
3
(너무 많으면 헷갈리고, 너무 적으면 정보가 부족할 수 있으니
3~5 사이가 좋아!)
5. 점수 임계값
무엇이냐면?
"이 점수보다 낮으면 아예 무시해!"
즉, 관련성이 너무 낮은 문서는 빼버리는 기준이야.추천값:
0.5
(기본값 그대로 두면 충분해!)
가중 점수 vs 재랭크 모델, 무엇을 쓸까?
가중 점수:
AI가 "뜻"과 "단어" 중 뭐가 더 중요한지
점수로 결정해서 순서를 정해줘.장점: 빠르고 간단함.
단점: 아주 똑똑하게 순서를 바꾸진 못함.
재랭크 모델:
AI가 한 번 더 생각해서
진짜 중요한 순서대로 뽑아줘.장점: 검색 품질이 훨씬 더 좋아짐!
단점: 조금 더 느릴 수 있음.
n8n 공식 문서처럼 정확한 답이 중요한 경우에는
재랭크 모델을 선택하는 것이 훨씬 좋아요!
참고: 재랭크 모델
Cohere의 재랭크 모델로 아래 3가지가 선택지에 있습니다:
rerank-english-v3.0
rerank-multilingual-v3.0
rerank-v3.5
각 모델의 특징과 n8n 공식 문서에 적합한 선택을 아래와 같이 안내합니다.
각 모델 설명 (초등학생도 알 수 있게)
1. rerank-english-v3.0
설명:
영어로 된 질문과 문서에 가장 잘 맞게 만든 모델이에요.언제 사용?
문서와 질문이 거의 다 영어일 때 최고!
2. rerank-multilingual-v3.0
설명:
영어뿐 아니라 한국어, 일본어, 중국어 등
여러 나라 말을 모두 잘 이해하는 모델이에요.언제 사용?
문서나 질문에 영어랑 다른 언어(특히 한국어)가 섞여 있을 때 좋아요.
3. rerank-v3.5
설명:
Cohere의 최신 버전 재랭크 모델로,
영어와 여러 언어 모두에서 더 똑똑하고 성능이 좋아요.언제 사용?
최신 성능이 필요하거나,
다양한 언어에 모두 잘 대응하고 싶을 때 좋아요.
n8n 공식 문서에 추천
n8n 공식 문서가 거의 영어로 되어 있다면:
rerank-english-v3.0
→ 영어에 최적화, 빠르고 비용도 효율적질문이나 문서에 한국어 등 여러 언어가 섞일 수 있다면:
rerank-multilingual-v3.0
→ 영어+한국어 혼합 환경에 최적최신 모델, 더 높은 정확도를 원한다면:
rerank-v3.5
→ 가장 똑똑하고, 다양한 언어도 잘 처리함(단, 비용이 조금 더 높을 수 있음)
여기까지 중간 보스들을 깨고 드디어 다음 버튼을 누릅니다.
파일 추가를 계속 하여 20개씩 추가하면서 n8n docs 지식 폴더를 꽉꽉 채웁니다.
500개 한도까지 꽉꽉 채워줍니다.
간혹 1,2개의 파일이 초록불이 들어오지 않아서
에러가 나는 경우들이 있었는데
이 경우 일단 무시하고 다른 파일들을 3단계까지 진행하고,
에러난 파일들은 3단계에서 삭제하고
다시 1단계에서 에러난 파일들을
다시 올려보니 오류 없이 진행이 되더군요.
그런데 md 파일로 된 n8n docs 개수가
500개가 훌쩍 넘는 걸 거의 끝에 가서 알게 됐습니다.
좌절합니다만....
(노드 관련한 md 파일들을 2~300개 못 집어 넣은 것 같습니다.)
더 이상 삽질을 계속 하기에는 체력에 무리가 와서 타협합니다.
조금 덜 떨 어진 n8n 도우미 챗봇을 만들되
Dify로 만드는 것을 체화하는 데 주력하기로 합니다.
힘들고 어렵게 Knowledge를 구축했으니
이제 지식을 연결해서 RAG 챗봇을 만들어 봅니다.
만들기 누르니 알아서 시스템 프롬프트를 만들어주네요
한 번 검토 후에 복붙합니다.
기본 구조를 바로 만들어 줍니다.
이제 지식을 연결합니다.
쿼리 변수는 시스템에서 사용자가 입력하는 질문으로 시작하도록 설정합니다
메타 데이터는 또 모야? 또 다시 중간 보스를 만납니다.
격파를 위해 물어보니
메타데이터란?
메타데이터는 ‘정보에 대한 정보’예요. 예를 들어, 책을 생각해보면 책의 제목, 저자, 출판년도, 장르 같은 내용이 바로 메타데이터예요. 이런 정보가 있으면 많은 책 중에서 내가 원하는 책을 쉽게 찾을 수 있죠.
챗봇이나 검색 시스템에서도 문서에 이런 메타데이터가 달려 있어서, 원하는 조건에 맞는 문서를 더 똑똑하게 찾을 수 있어요.
Dify AI의 메타데이터 필터링 옵션 세 가지
첨부된 이미지를 보면, Dify AI에서는 메타데이터 필터링을 다음 세 가지 방식 중에서 고를 수 있어요1:
장애인(비활성화)
설명: 메타데이터 필터링을 사용하지 않아요. 즉, 모든 데이터를 조건 없이 다 검색해요.
특징: 아무런 제한 없이 모든 결과를 보여주기 때문에, 결과가 너무 많거나 불필요한 정보가 섞일 수 있어요.
자동
설명: 사용자의 질문(쿼리)을 바탕으로 Dify AI가 알아서 메타데이터 필터 조건을 만들어줘요.
특징: 사용자가 따로 조건을 입력하지 않아도, AI가 똑똑하게 관련 있는 문서만 골라서 보여줄 수 있어요. 대부분의 경우 편리하게 사용할 수 있어요.
수동
설명: 메타데이터 필터 조건을 직접 입력해서 내가 원하는 기준에 맞는 문서만 찾을 수 있어요.
특징: 예를 들어, ‘저자=홍길동’ 또는 ‘출판년도=2023’처럼 아주 구체적인 조건을 직접 정할 수 있어요. 원하는 조건이 명확할 때 가장 정확해요.
어떤 옵션을 선택하는 것이 좋을까?
일반적으로는 “자동”을 추천해요.
왜냐하면 사용자가 질문만 하면 AI가 알아서 관련 있는 문서만 골라주기 때문에, 편리하고 결과도 똑똑하게 나와요.만약 정말 특정한 조건(예: 특정 저자, 특정 날짜 등)으로만 검색하고 싶다면 “수동”을 선택해서 직접 조건을 입력하는 게 좋아요.
테스트나 모든 데이터를 다 보고 싶을 때는 “장애인(비활성화)”로 해도 되지만, 결과가 너무 많아질 수 있어요.
정리
메타데이터는 정보를 더 잘 찾게 해주는 ‘정보의 정보’예요.
Dify AI의 메타데이터 필터링 옵션은 “장애인(비활성화)”, “자동”, “수동”이 있고,
대부분의 경우 “자동”을 사용하는 것이 쉽고 편리해서 추천해요!
이해 완료 후 추천대로 설정합니다.
또 다른 중간 보스 등장
각 매개변수 쉬운 설명
1. Temperature (온도)
설명: AI가 답을 만들 때 얼마나 ‘창의적’이고 ‘다양하게’ 답할지 정하는 값이에요.
값이 낮으면(0에 가까울수록) 항상 비슷한 답을 주고, 값이 높으면(1에 가까울수록) 매번 다른 답이 나올 수 있어요.
예시: 온도가 0이면 “하늘은 파랗다”라고만 말하고, 1이면 “하늘은 파랗기도 하고, 구름이 많기도 해”처럼 여러 가지로 말할 수 있어요278.
2. Top P
Top P란 무 엇인가요?
Top P는 인공지능이 다음에 어떤 단어를 쓸지 고를 때, "가장 가능성이 높은 단어들 중에서 누적 확률이 P(퍼센트)만큼 될 때까지 모아서, 그 안에서만 고르는 방법"이에요1256.
초등학생도 이해할 수 있게 예시로 설명
예를 들어, "나는 ___를 먹었다."라는 문장에서 인공지능이 빈칸에 들어갈 단어를 고른다고 해볼게요. 인공지능이 생각하는 단어와 각각의 확률이 이렇게 있다고 해요:
밥: 40%
과일: 30%
빵: 15%
피자: 10%
샐러드: 3%
초콜릿: 2%
여기서 Top P를 0.9(=90%)로 정하면, 확률이 높은 단어부터 차례로 더해서 90%가 넘을 때까지 단어를 모아요.
밥(40%) + 과일(30%) = 70%
여기에 빵(15%)을 더하면 85%
피자(10%)를 더하면 95% (90%를 넘음!)
그래서 90%가 넘기 전까지 모인 단어들, 즉 "밥", "과일", "빵"만 후보가 돼요. 인공지능은 이 세 개 중에서 하나를 골라서 답을 만들어요125.
Top P를 왜 쓰나요?
Top P 값을 높이면(예: 0.9~1.0) 더 많은 단어가 후보에 들어가서, 답이 더 다양하고 창의적일 수 있어요. 하지만 가끔은 엉뚱한 답이 나올 수도 있죠46.
Top P 값을 낮추면(예: 0.1~0.5) 정말 가능성이 높은 단어만 남아서, 답이 더 똑똑하고 예측 가능한 대신, 재미없을 수도 있어요46.
한마디로 정리
Top P는 "확률이 높은 단어들 중에서, 정해진 퍼센트만큼만 모아서 그 안에서 답을 고르는 방법"이에요.
값을 높이면 답이 다양해지고, 낮추면 답이 똑똑해져요!
AI는 "밥", "과일", "빵", "피자" 중에서 무작위(랜덤)로 하나를 선택해요.
하지만 이때도 각 단어가 뽑힐 확률은 원래 AI가 생각한 확률(40%, 30%, 15%, 10%)을 기준으로 해요.
예를 들어,
"밥"이 뽑힐 확률이 가장 높고,
그다음이 "과일",
그다음이 "빵",
마지막으로 "피자"예요.
즉, 네 개 중에서 아무거나 골라지는 게 아니라, 원래 확률대로 뽑혀요. 그래서 "밥"이 가장 자주 나오고, "피자"는 가끔 나올 거예요.
만약 여러 번 AI에게 물어보면, "밥"이 제일 많이 나오고, "과일", "빵", "피자" 순으로 적게 나올 거예요.
3. Presence Penalty
설명: AI가 이미 쓴 단어를 또 쓰지 않도록 하는 벌점이에요.
예시: Presence Penalty를 높이면 “사과, 바나나, 포도”처럼 다양한 과일 이름을 말하고, 낮으면 “사과, 사과, 사과”처럼 같은 말을 반복할 수 있어요.
4. Frequency Penalty
설명: AI가 같은 단어를 여러 번 반복하지 않도록 하는 벌점이에요.
Presence Penalty와 비슷하지만, 얼마나 자주 반복하는지도 신경 써요4.
예시: Frequency Penalty를 높이면 “나는 학교에 갔다. 그리고 집에 왔다.”처럼 다양한 말을 쓰고, 낮으면 “나는 학교에 갔다. 나는 학교에 갔다.”처럼 반복할 수 있어요.
5. Max Tokens (최대 토큰 수)
설명: AI가 답을 얼마나 길게 쓸 수 있는지 정하는 거예요.
숫자가 크면 답이 길어지고, 작으면 답이 짧아져요. 한글 기준으로 100토큰은 약 75단어 정도예요5.
예시: Max Tokens가 512면 긴 답변, 50이면 아주 짧은 답변이 나와요.
6. Response Format (응답 형식)
추천 설정 방법
Temperature: 0.5~0.7
(일반적인 질문에는 0.5, 창의적인 답이 필요할 땐 0.7로 설정하면 좋아요.)Top P: 1
(처음엔 1로 두고, 답이 너무 다양하거나 산만하면 0.8~0.9로 낮춰보세요.)Presence Penalty: 0
(특별히 반복을 막고 싶을 때만 0.5~1로 올려요.)Frequency Penalty: 0
(같은 말을 자주 반복하면 0.5~1로 올려요.)Max Tokens: 256~512
(짧은 답변은 100~200, 긴 설명이나 글은 512까지 올려도 돼요.)Response Format:
(일반 대화는 ‘기본’, 컴퓨터가 읽을 데이터가 필요하면 ‘JSON’ 등으로 선택해요.)
이해 완료 후, 설정 들어갑니다.
완료 후, 다음 단계인 LLM에 이르니
역시 중간 보스 등판합니다.
컨텍스트에는 지식으로 사용할 앞 단의 지식 검색 값을 넣어야 합니다.
그래서 result 변수를 선택하고
시스템 프롬프트를 perplexity의 도움을 받아서 작성 후 넣어줍니다.
그리고 부가적으로 대화 시작, Follow up 등을 설정해줍니다.
이제 미리보기로 test 해봅니다.
답변 괜찮습니다. 출처도 나오고 follow up 질문도 따라 붙네요.
출처 파일을 눌러보면
제대로 된 것을 확인할 수 있습니다.
챗봇으로 배포도 해봅니다.
n8n docs의 모든 파일이 들어가지는 못해서 약간은 덜 떨어진 RAG 챗봇이지만
처음으로 본격 도전한 결과로는 나쁘지 않은 것 같습니다.
고생하며 배운 내용들이 많거든요.
만들어진 n8n 도우미 챗봇 입니다.
https://udify.app/chat/XTXiHgo6lJVdD2to
앞으로 좀 더 발전해 보겠습니다.
앞으로도 Dify와 RAG, Orchestration 생태계에서 잡초처럼 꿋꿋이 자라나겠습니다.