RAG 동작 수행
RAG 계정으로 지정된 AI 모델 서버의 RAG 공간에 프롬프트를 보내거나 데이터를 추가 및 제거합니다.
다음도 참조하십시오.
옵션
-
RAG 계정 이름은 이 스크립트 단계에서 사용할 RAG 계정의 텍스트 표현식입니다. 현재 파일에서 RAG 계정 구성 스크립트 단계를 사용하여 계정을 설정하고 이 스크립트 단계가 실행되기 전에 언제든지 이 이름을 할당하십시오.
-
공간 ID는 지정된 RAG 계정에서 작업할 RAG 공간의 고유 ID를 지정하는 텍스트 표현식입니다.
-
동작은 RAG 공간에서 수행할 동작 유형을 지정합니다. 이 옵션은 스크립트 단계에서 다른 옵션의 가용성을 제어합니다. 다음 중에서 선택하십시오.
-
데이터 추가는 RAG 공간에 문서(텍스트 데이터 또는 PDF 파일)를 추가합니다.
-
프롬프트 보내기는 RAG 공간을 쿼리하고 AI 생성 응답을 얻기 위한 프롬프트를 보냅니다.
-
데이터 제거는 RAG 공간에서 문서를 제거합니다.
-
추가 옵션은 동작이 데이터 추가인 경우 사용할 수 있습니다:
-
RAG 데이터는 RAG 공간에 추가할 문서를 지정합니다.
-
텍스트에서는 텍스트 표현식을 통해 직접 텍스트를 추가하고, 동기식으로 전송합니다.
-
파일에서는 경로가 제공되고 동기식으로 전송되는 PDF 파일을 추가합니다.
-
파일에서(비동기)는 경로가 제공되고 비동기식으로 전송되는 PDF 파일을 추가합니다(대용량 파일에 가장 적합).
-
컨테이너에서는 컨테이너 필드에서 동기식으로 전송되는 PDF 파일을 추가합니다.
-
컨테이너에서 (비동기) 컨테이너 필드에서 비동기식으로 전송되는 PDF 파일을 추가합니다(대용량 파일에 가장 적합).
-
-
입력 파일은 PDF 파일에 대한 하나 이상의 경로 목록을 지정합니다. 스크립트 단계는 목록을 검색하여 찾은 첫 번째 PDF 파일을 추가합니다. 경로는
image경로 접두사 중 하나를 사용해야 합니다. 파일 경로 생성하기를 참조하십시오. -
컨테이너 필드는 추가할 PDF 파일을 저장하는 컨테이너 필드를 지정합니다.
-
세로 텍스트 감지는 일본 문학 작품, 신문, 정부 문서 및 학술 논문에서 흔히 볼 수 있는 세로 텍스트가 포함된 PDF 파일에서 텍스트 추출을 향상시킵니다. 이 옵션은 RAG 데이터가 텍스트에서인 경우 사용할 수 없습니다.
-
텍스트 청크당 토큰은 텍스트 또는 PDF 파일을 RAG 공간에 추가할 때 각 텍스트 청크에 포함할 토큰 수를 지정하는 숫자 표현식입니다. 유효한 값은 75에서 512 사이의 값입니다. 값이 지정되지 않았거나 0으로 설정된 경우, Admin Console에서 AI 모델 서버에 구성된 값이 사용됩니다(기본값은 200 토큰).
-
응답 대상은 추가된 문서에 대해 AI 모델 서버가 반환하는 JSON 대상체를 저장할 필드 또는 변수를 지정합니다. 설명을 참조하십시오.
추가 옵션은 동작이 프롬프트 보내기인 경우 사용할 수 있습니다:
-
프롬프트 보내기의 값은 자연어 사용자 프롬프트 또는 질문에 대한 텍스트 표현식입니다.
-
AI 계정 이름은 응답을 생성하는 데 사용할 AI 계정 이름의 텍스트 표현식입니다. 현재 파일에서 AI 계정 구성 스크립트 단계를 사용하여 계정을 설정하고 해당 스크립트 단계가 실행되기 전에 언제든지 이 이름을 할당하십시오.
-
모델은 사용할 텍스트 생성 모델의 이름입니다. 모델 이름을 텍스트 표현식으로 지정합니다. 지원되는 모델은 FileMaker 기술 사양을 참조하십시오.
-
스트림은 응답이 전달되는 방식을 제어합니다.
-
켬: 응답이 검색되고 점진적으로 전달됩니다(단어별 또는 구문 단위). 이를 통해 FileMaker 클라이언트가 더 반응성을 느낄 수 있습니다.
-
끔: 전체 응답을 사용할 수 있게 되기 전에 검색됩니다. 이로 인해 완전한 응답을 기다리는 동안 FileMaker 클라이언트가 응답하지 않는 것처럼 보일 수 있습니다.
-
-
프롬프트 템플릿 이름은 프롬프트 템플릿 구성 스크립트 단계를 사용하여 구성된 사용자 설정 프롬프트 템플릿의 이름을 지정합니다. 이 옵션을 사용하여 AI 모델에서 최적의 응답을 달성하는 데 도움이 되는 추가 프롬프트를 설계합니다.
-
응답 대상은 모델의 응답을 저장할 필드 또는 변수를 지정합니다.
-
매개 변수는 JSON 대상체에 대한 텍스트 표현식이며, 다음을 포함할 수 있습니다.
-
요청을 보내기 전에 처리되고 제거되는 FileMaker 클라이언트 매개변수:
CURLOPT_TIMEOUT은 요청이 완료되는 최대 시간(초)을 설정합니다. 값은 음수가 아닌 정수여야 합니다. 예를 들어 다음과 같습니다.{"CURLOPT_TIMEOUT": 30}. 이 시간 내에 응답이 없을 경우, FileMaker 클라이언트는 요청을 취소하고 이 스크립트 단계는 오류 코드 1629("연결 시간이 초과되었습니다")를 반환합니다. -
AI 모델 서버 매개 변수는 Admin Console에 구성된 설정을 이 스크립트 단계 동안에만 무시합니다. 지정되지 않은 경우, Admin Console에 설정된 값이 사용됩니다. 해당 매개 변수는 JSON 대상체에 포함하는 다른 매개 변수를 모델 제공자에게 직접 전달하기 전에 처리되고 제거됩니다.
자세한 내용은 설명을 참조하십시오.
-
프롬프트와 함께 모델 제공자에게 직접 전달되는 모델 제공자별 매개 변수입니다. 예를 들어 다음과 같습니다.
{"온도": 0.7, "seed": 42}.참고 사용 중인 모델에서 지원하는 매개 변수 및 값은 모델 제공자의 설명서를 참조하십시오.
-
추가 옵션은 동작이 데이터 제거일 때 사용할 수 있습니다:
-
매개 변수는 지정된 RAG 공간에서 제거될 문서의 ID 배열을 값으로 하는
id키를 포함하는 JSON 대상체에 대한 텍스트 표현식입니다. 예를 들어 다음과 같습니다.복사{"id" : ["5f7677a0-3258-55a3-bc86-737005cb3574", "f95d4266-66cd-5b50-a01b-07a4dd66c501"]}문서가 추가될 때 응답 대상에 반환된 문서 ID는 저장될 수 있으며, 나중에 문서를 제거하는 데 사용할 수 있습니다. 또는 RAG 공간에 있는 모든 문서의 ID를 가져오려면 GetRAGSpaceInfo 함수를 사용하십시오.
호환성
| 제품 | 지원 |
| FileMaker Pro | 예 |
| FileMaker Go | 예 |
| FileMaker WebDirect | 예 |
| FileMaker Server | 예 |
| FileMaker Cloud | 예 |
| FileMaker Data API | 예 |
| 사용자 설정 웹 발행 | 예 |
다음 버전에서 시작됨
22.0
설명
이 스크립트 단계를 통해 Claris AI Model Server에서 문서(텍스트 데이터 및 PDF 파일)의 지식 캐시를 생성하고 관리할 수 있습니다. 그런 다음 검색 증강 생성(RAG)이라는 기술로 이 캐시를 활용할 수 있습니다. 이 기술을 사용하면 스크립트 단계에서는 지식 캐시에서 검색된 가장 관련성이 높은 사실과 함께 AI 모델에 프롬프트 또는 질문을 보내 모델의 응답의 신뢰성과 정확성을 개선합니다.
동작 옵션은 이 스크립트 단계가 수행할 동작을 결정합니다.
데이터 추가 동작
이 동작은 지정된 문서에서 텍스트(모든 텍스트 표현식), 경로별 PDF 파일, 현재 또는 관련 레코드에서 컨테이너 필드의 PDF 파일과 같은 RAG 데이터를 추가합니다. 이 프로세스는 다음 단계를 따릅니다.
-
스크립트 단계는 문서를 AI 모델 서버로 보냅니다.
PDF 파일을 추가하는 경우, 스크립트 단계는 RAG 데이터 옵션에 따라 파일을 동기식 또는 비동기식으로 보냅니다. 동기식으로 보내는 경우, 스크립트는 파일 전송이 완료될 때까지 다음 단계를 진행하지 않습니다. 비동기식으로 보내는 경우 파일 전송이 진행되는 동안 스크립트는 다음 단계를 계속 진행하므로(대용량 파일에 가장 적합) FileMaker 클라이언트가 사용자 상호 작용에 계속 반응할 수 있습니다.
-
AI 모델 서버는 문서에 ID를 할당한 후 처리합니다.
-
문서가 PDF 파일인 경우, 서버는 PDF 파일에서 텍스트만 추출합니다. 추출된 텍스트는 텍스트에서 옵션을 사용하여 추가한 텍스트와 동일한 방식으로 처리됩니다.
-
서버는 텍스트 청크당 토큰 옵션(지정된 경우) 또는 Admin Console에 설정된 청크 크기에 따라 텍스트를 청크로 분해합니다.
텍스트가 JSONL(JSON Lines) 포맷(각 줄이 유효한 JSON 대상체인 경우)인 경우, 서버는 자동으로 이 포맷을 감지하고 각 줄을 별개의 의미 단위로 간주합니다: 각 줄은 별도로 청크 처리되지만, 줄은 절대 병합되지 않습니다. 이는 FileMaker 테이블에서 추가된 구조화된 데이터와 같이 각 레코드를 단일 JSON 라인으로 포맷할 수 있어 레코드 경계가 유지되도록 하여 검색 정확도를 향상시키는 데 도움이 됩니다.
-
그런 다음, 서버에서 RAG에 대해 구성된 텍스트 임베딩 모델을 사용하여 모든 청크에 대한 임베딩 벡터를 가져옵니다.
-
-
응답 대상이 지정된 경우, AI 모델 서버는 추가된 문서의 문서 ID와 메타데이터를 포함하는 JSON 대상체를 반환합니다. 이렇게 하면 나중에 사용할 수 있도록 문서 ID를 저장할 수 있습니다(예: 문서를 제거하는 경우).
반환된 JSON 대상체에는 다음 키가 포함되어 있습니다:
-
id: AI 모델 서버가 16진수 인코딩된 Universally Unique Identifier(UUID)로 할당한 문서 ID. ID 포맷에 대한 자세한 내용은 메모를 참조하십시오. -
모델: AI 모델 서버가 문서의 임베딩 벡터를 생성하기 위해 사용하는 임베딩 모델. -
rag_space_id: 문서가 추가된 RAG 공간의 ID. -
결과또는오류:-
결과: 오류가 없을 때 추가된 문서의 상태. 동기식으로 성공적으로 전송된 문서의 경우, 값은"ok"입니다. 비동기적으로 전송된 문서의 경우, 값은 공간 ID와 캐시된 파일 이름을 포함하는 문자열이며, 아직 프로세스가 완료되지 않았기 때문입니다. -
오류: AI 모델 서버가 오류를 겪을 때 발생하는 오류 메시지 문자열입니다.
-
-
텍스트 또는 파일은 RAG 데이터 옵션에 따라 다릅니다:
-
텍스트: RAG 데이터에 대해 텍스트에서 옵션을 사용하여 추가된 문서의 텍스트입니다. -
파일: RAG 데이터에 대한 파일 또는 컨테이너 옵션을 사용하여 추가된 PDF 파일의 파일 이름입니다.
-
-
사용: 문서가 동기식으로 전송될 때 토큰 사용 정보. 반환된 JSON 대상체는{"prompt_tokens":<number>, "total_tokens":<number>}이며, 여기서prompt_tokens는 입력에 포함된 토큰 수(임베드된 텍스트 청크)이며total_tokens는 처리된 토큰의 총 개수입니다. AI 모델 서버가 토큰 사용을 기록하지 않도록 설정된 경우, 토큰 카운트가 반환되지 않습니다.
참고 비동기적으로 전송된 문서의 경우,
rag_space_id,model, 및usage키는"N/A"를 반환합니다. 이는 이러한 값이 처리 완료될 때까지 사용할 수 없기 때문입니다. -
프롬프트 보내기 동작
이 동작은 지정된 RAG 공간에서 가장 관련성이 높은 데이터를 가져오기 위해 사용자 프롬프트를 AI 모델 서버로 보낸 다음, 프롬프트 템플릿 및 RAG 콘텐츠를 포함한 사용자 프롬프트를 AI 모델로 보냅니다. 이 프로세스는 다음 단계를 따릅니다.
-
스크립트 단계는 프롬프트 보내기로 지정된 프롬프트 및 공간 ID를 RAG 계정 이름으로 지정된 AI 모델 서버로 보냅니다.
-
AI 모델 서버는 프롬프트에 대한 임베딩 벡터를 가져오고 지정된 RAG 공간에서 프롬프트에 대한 시맨틱 검색을 수행한 다음, RAG 결과를 스크립트 단계로 반환합니다.
RAG 결과는 텍스트 형태로 RAG 공간에서 가장 관련성이 높은 상위 N개의 문서 청크이며(N은 아래와 같이 관리 콘솔에서 구성할 수 있고 매개 변수 옵션으로 무시할 수 있습니다).
-
스크립트 단계는 프롬프트, 프롬프트 템플릿, 모델 매개 변수 및 RAG 결과를 AI 계정 이름과 모델로 지정된 모델로 보냅니다.
-
모델은 스크립트 단계에서 응답 대상에 저장하는 응답을 반환합니다.
AI 모델 서버 매개변수
매개 변수 옵션에 대해서는 AI 모델 서버에 특정한 다음 키와 값을 사용하여 이 스크립트 단계의 동작을 조정할 수 있습니다. 지정된 경우, 이러한 값은 Admin Console에 설정된 값을 우선합니다. 다양한 프롬프트가 서로 다른 정밀도나 컨텍스트 크기를 필요로 할 때 유용합니다(예: 작은 문서와 달리 큰 문서 세트를 조회할 때). 키가 지정되지 않은 경우, Admin Console에 구성된 값이 사용됩니다.
|
매개 변수 키 |
설명 |
값의 범위 |
|
|
RAG 결과에 대한 최소 코사인 유사도 점수가 컨텍스트에 포함됩니다. 값이 높을수록 적은 결과를 얻을 수 있지만, 더 관련성이 높은 결과를 얻을 수 있습니다. |
-1~1 |
|
|
AI 모델에 전송되는 컨텍스트에 포함할 상위 순위 문서 청크의 최대 정수 수. 값이 0인 경우 RAG 콘텐츠가 포함되지 않습니다. |
1~100 |
예를 들어, 이 JSON 대상체는 매개 변수 옵션에서 다음 키를 설정합니다.
{
"similarity_threshold" : .5,
"num_top_ranked_results" : 10
}
데이터 제거 동작
이 동작은 RAG 공간에서 문서를 제거합니다. 매개 변수 옵션에 지정된 경우에는 지정된 문서만 제거되며, 지정되지 않은 경우에는 RAG 공간의 모든 문서가 제거됩니다.
참고 RAG 공간에서 문서를 제거하는 동작은 취소할 수 없습니다. 원본 문서를 다시 추가해야 할 수 있으므로 미리 다른 곳에 보관하십시오.
참고
-
이 스크립트 단계를 사용하기 전에 RAG 계정 구성 스크립트 단계를 따라 RAG 계정을 구성해야 합니다.
-
프롬프트 보내기 동작의 경우 AI 계정 구성 스크립트 단계을 따라 AI 계정도 구성해야 합니다.
-
암호화되거나 암호로 보호된 PDF 파일은 데이터 추가 동작으로 처리할 수 없습니다.
-
RAG 공간은 영구적이며 데이터 제거 동작을 사용하여 명시적으로 제거할 때까지 문서를 보관합니다.
-
RAG 공간에 이미 있는 문서와 동일한 이름의 PDF 파일을 추가하면 기존 PDF 파일은 제거되고 새 문서 ID가 지정된 새 PDF 파일이 추가됩니다. 이 동작은 경로 또는 컨테이너 필드를 통해 PDF 파일을 추가할 경우에도 동일합니다.
-
AI 모델 서버 버전 26.0.1 이전에 RAG 공간에 추가된 문서에는 숫자 문서 ID가 있습니다.(예:
1,2,3). 버전 26.0.1부터 문서 ID는 UUID 문자열입니다(예:"5f7677a0-3258-55a3-bc86-737005cb3574"). ID 포맷 변경 전후에 추가된 문서가 같이 포함된 RAG 공간을 작업할 때, 스크립트는 두 문서 ID 포맷 모두를 처리해야 합니다.예제 3을 참조하십시오.
-
프롬프트 템플릿 이름을 지정하는 경우 이 스크립트 단계는 프롬프트 템플릿 구성 스크립트 단계를 통해 설정된 템플릿을 사용합니다. 프롬프트 템플릿은
:question:(프롬프트 보내기 값으로 교체) 및:context:(RAG 공간에서 RAG에서 검색된 문서 청크로 교체)와 같은 상수를 사용할 수 있습니다. -
텍스트 청크당 토큰 옵션에 대해:
-
큰 청크 크기는 더 많은 맥락을 보존하지만 검색 정확도를 낮출 수 있습니다. 작은 청크 크기는 정밀도를 향상시키지만 맥락을 잃을 수 있습니다. 일본어, 중국어, 한국어와 같이 토큰화가 토큰당 문자 수를 적게 생성하므로 고정된 토큰 수가 차지하는 텍스트가 크게 감소하므로, 예를 들어 250~300과 같은 더 큰 값을 사용하는 것을 고려하십시오.
-
RAG 공간에서 기존 문서의 청크 크기를 변경하려면, 해당 RAG 공간에서 문서를 제거하고 새로운 청크 크기로 다시 추가해야 합니다.
-
유효한 범위 밖의 값을 지정하면, 이 스크립트 단계는 오류 코드 887 ("RAG 공간 동작이 유효하지 않습니다")을 반환합니다.
-
-
AI 응답의 품질은 모델 및 RAG 공간에 추가된 문서의 관련성과 품질에 따라 달라집니다.
-
FileMaker WebDirect에서는 이 스크립트 단계에서 데이터 추가 동작을 사용하고 RAG 데이터가 파일에서 또는 파일에서(비동기)인 경우, 사용자가 업로드할 PDF 파일을 선택할 수 있는 삽입 대화상자가 열립니다. 입력 파일 옵션은 무시됩니다.
예제 1 - RAG 공간에 텍스트 추가
고객 지식 베이스의 RAG 공간에 텍스트 콘텐츠를 추가합니다.
RAG 계정 구성 [ RAG 계정 이름: "customer-support-rag-account" ; 엔드포인트: "https://myserver.example.com/llm/v1/" ; API 키: "eyJh..." ; SSL 인증서 확인 ]
RAG 동작 수행 [ RAG 계정 이름 : "customer-support-rag-account" ; 공간 ID: "knowledge-base" ; 동작: 데이터 추가 ; RAG 데이터: 텍스트에서 ; "반품 및 교환 처리에 대한 고객 지원 정책 및 절차..." ]
예제 2 - RAG 공간을 쿼리하라는 프롬프트 보내기
예제 1과 동일한 RAG 공간을 쿼리하라는 프롬프트를 보내고 응답을 필드에 저장합니다.
이 스크립트는 RAG 계정과 AI 계정 모두가 AI 모델 서버를 사용하도록 설정합니다.
$parameters 변수에서 simularity_threshold를 0.6으로 설정하여 관련성이 높은 RAG 결과만 포함되도록 하고, num_top_ranked_results를 5로 설정하여 컨텍스트를 가장 관련성 높은 문서 5개 청크로 제한하며, 이는 Admin Console에서 설정된 기본값을 무시합니다. 또한 CURLOPT_TIMEOUT을 포함하여, 응답이 없을 경우 30초 후에 요청을 취소합니다.
프롬프트를 전송하면 스크립트는 temperature 및 max_tokens 매개 변수를 모델에 전송하여 응답 생성을 위해 전송하고, 응답을 필드로 스트리밍합니다.
RAG 계정 구성 [ RAG 계정 이름: "customer-support-rag-account" ; Endpoint: "https://myserver.example.com/llm/v1/" ; API 키: Global::RAG_API_Key ; SSL 인증서 확인 ]
AI 계정 구성 [ 계정 이름: "AI_Model_Server" ; 모델 제공자: 사용자 설정; 엔드포인트: "https://myserver.example.com/llm/v1/" ; API 키: Global::Text_Gen_API_Key ; SSL 인증서 확인 ]
변수 설정 [ $parameters ; Value:
JSONSetElement ( "{}" ;
[ "temperature" ; .3 ; JSONNumber ] ;
[ "max_tokens" ; 500 ; JSONNumber ] ;
[ "similarity_threshold" ; .6 ; JSONNumber ] ;
[ "num_top_ranked_results" ; 5 ; JSONNumber ]
)
]
RAG 동작 수행 [ RAG 계정 이름: "customer-support-rag-account" ; 공간 ID: "knowledge-base" ; 동작: Send Prompt ; Send Prompt: "불량 제품에 대한 반품 정책은 무엇입니까?" ; AI 계정 이름: "AI_Model_Server" ; 모델: Global::ModelName ; 스트림: 켬 ; 응답 대상: Customer_Support::AI_Response ; Parameters: $parameters ]
Customer_Support::AI_Response 필드의 결과는 "결함 있는 제품에 대한 반품 정책에 따라 14일 이내에 제품을 반품하실 수 있습니다."와 같이 시작할 수 있습니다.
예제 3 - RAG 공간에서 PDF 파일 추가 및 제거
Policies.pdf라는 이름의 PDF 파일을 RAG 공간에 추가한 다음 제거합니다.
AI 모델 서버에서 사용할 RAG 계정을 구성한 후 스크립트는 파일 경로를 지정하여 Policies.pdf 파일을 RAG 공간에 추가합니다. 파일을 제거하기 전에 스크립트는 파일이 추가되었을 때 할당된 문서 ID를 찾아야 합니다. 문서 ID는 응답 대상에 의해 반환되며 $ragAddResponse에 저장됩니다. 예를 들어 다음과 같습니다.
{{
"file": "Policies.pdf",
"id": "f95d4266-66cd-5b50-a01b-07a4dd66c501",
"model": "multi-qa-MiniLM-L6-cos-v1",
"rag_space_id": "knowledge-base",
"result": "ok",
"usage": {
"prompt_tokens": 3803,
"total_tokens": 3803
}
}먼저, 스크립트는 $ragAddResponse에서 문서 ID를 가져와서 $id에 저장합니다. 또한 JSONGetElementType 함수를 사용하여 ID의 데이터 타입을 가져와 $idType에 저장합니다. 데이터 유형은 UUID의 경우 JSONString이며, 숫자 ID의 경우 JSONNumber가 됩니다(ID 포맷에 대한 자세한 내용은 메모를 참조).
다음으로, 스크립트는 $idArrayToRemove 변수를 id 키로 구성된 JSON 대상체로 빌드하며, 그 값은 제거할 문서 ID를 포함하는 배열입니다. 배열에 ID를 추가할 때, 스크립트는 $idType을 사용하여 $ragAddResponse의 원래 데이터 유형을 보존합니다. 이 접근 방식은 AI 모델 서버가 사용하는 ID 포맷에 관계없이 스크립트가 올바르게 작동하도록 보장합니다.
마지막으로, 스크립트는 매개 변수 옵션을 $idArrayToRemove로 설정하여 데이터를 제거하기 위해 RAG 수행 동작을 호출합니다.
RAG 계정 구성 [ RAG 계정 이름: "customer-support-rag-account" ; 엔드포인트: "https://myserver.example.com/llm/v1/" ; API 키: Global::RAG_API_Key ; Verify SSL Certificates ]
AG 동작 수행 [ RAG 계정 이름: "customer-support-rag-account" ; 공간 ID: "knowledge-base" ; 동작: 데이터 추가 ; RAG 데이터: 파일에서 ; "Policies.pdf" ; 응답 대상: $ragAddResponse ]
변수 설정 [ $id ; Value: JSONGetElement ( $ragAddResponse ; "id" ) ]
변수 설정 [ $idType ; Value: JSONGetElementType ( $ragAddResponse ; "id" ) ]
변수 설정 [ $idArrayToRemove ; Value:
JSONSetElement ( "{}" ; "id" ;
JSONSetElement ( "[]" ; 0 ; $id ; $idType ) ;
JSONArray
)
]
RAG 동작 수행 [ RAG 계정 이름: "customer-support-rag-account" ; 공간 ID: "knowledge-base" ; 동작: 데이터 제거 ; 매개 변수: $idArrayToRemove ]예제 4 - 청크 크기가 다른 문서 추가
각 언어에 최적화된 서로 다른 청크 크기를 사용하여 동일한 RAG 공간에 영어와 일본어 문서를 모두 추가합니다.
스크립트는 영어 기술 문서에 대해 더 작은 청크 크기(150 토큰)를 사용하여 특정 기술 세부 정보를 정확하게 검색할 수 있도록 합니다.
일본 규제 문서의 경우, 해당 스크립트는 더 큰 청크 크기(300 토큰)를 사용합니다. 이는 일본어 토큰화가 토큰당 짧은 텍스트 세그먼트를 생성하므로 충분한 컨텍스트를 유지하기 위해 더 많은 토큰이 필요하기 때문입니다. 스크립트는 또한 세로 텍스트 감지 옵션을 선택하여 이 PDF 파일에서 세로 텍스트 추출을 개선합니다.
RAG 계정 구성 [ RAG 계정 이름: "product-docs-rag-account" ; Endpoint: "https://myserver.example.com/llm/v1/" ; API key: Global::RAG_API_Key ; SSL 인증서 확인 ]
RAG 동작 수행 [ RAG 계정 이름: "product-docs-rag-account" ; 공간 ID: "product-knowledge" ; Action: 데이터 추가 ; RAG 데이터: 파일에서 ; "TechnicalSpecs_EN.pdf" ; 텍스트 청크당 토큰: 150 ]
RAG 동작 수행 [ RAG 계정 이름: "product-docs-rag-account" ; 공간 ID: "product-knowledge" ; 동작: 데이터 추가 ; RAG 데이터: 파일에서 ; "Regulations_JA.pdf" ; 세로 텍스트 감지 ; 텍스트 청크당 토큰: 300 ]예제 5 - JSONL 텍스트로 레코드를 추가
FileMaker 테이블에서 FAQ 레코드를 JSONL 포맷을 사용하여 RAG 공간에 추가하며, 각 행은 하나의 완전한 FAQ 레코드를 나타냅니다.
스크립트는 FAQ 테이블의 레코드를 순회하면서 각 줄이 질문 ID, 질문 및 답변을 포함하는 JSON 대상체인 JSONL 텍스트 문자열을 생성합니다. 이 JSONL 포맷 텍스트가 RAG 공간에 추가되면, AI 모델 서버가 자동으로 해당 포맷을 감지하고 각 행(각 FAQ 레코드)을 별도의 의미 단위로 처리하여 레코드 경계를 보존하고 검색 정확도를 향상시킵니다.
RAG 계정 구성 [ RAG 계정 이름: "customer-support-rag-account" ; 엔드포인트: "https://myserver.example.com/llm/v1/" ; API 키: Global::RAG_API_Key ; SSL 인증서 확인 ]
변수 설정 [ $jsonlText ; Value: "" ]
레이아웃으로 이동 [ "FAQ" (FAQ) ; 애니메이션: 없음 ]
레코드/요청/페이지로 이동 [ First ]
루프 [ Flush: Always ]
변수 설정 [ $jsonLine ; Value:
JSONSetElement ( "{}" ;
[ "id" ; FAQ::QuestionID ; JSONString ] ;
[ "question" ; FAQ::Question ; JSONString ] ;
[ "answer" ; FAQ::Answer ; JSONString ]
)
]
변수 설정 [ $jsonlText ; Value: $jsonlText & $jsonLine & ¶ ]
레코드/요청/페이지로 이동 [ Next ; Exit after last: On ]
End Loop
RAG 동작 수행 [ RAG 계정 이름: "customer-support-rag-account" ; 공간 ID: "knowledge-base" ; 동작: 데이터 추가 ; RAG 데이터: 텍스트에서; $jsonlText ; 응답 대상: $ragResponse ]결과 $jsonlText 변수에는 다음과 같은 JSONL 포맷의 텍스트가 포함되어 있습니다:
{"id":"001","question":"반품 정책은 어떻게 되나요?","answer":"상품은 30일 이내에 반품할 수 있습니다..."}
{"id":"002","question":"주문을 어떻게 추적하나요?","answer":"추적 번호를 사용하여 주문을 추적하실 수 있습니다..."}
{"id":"003","question":"국제적으로 배송하시나요?","answer":"예, 전 세계 100개 이상의 국가로 배송합니다..."}줄이 충분히 짧으면 AI 모델 서버가 이를 하나의 청크로 만듭니다. 한 줄이 텍스트 청크당 토큰 수 제한을 초과하면, 해당 줄은 여러 청크로 분할됩니다. 줄은 절대 병합되지 않기 때문에, RAG 공간을 조회할 때 검색된 청크에는 단일 FAQ 레코드의 내용만 포함하게 되어, 관련 정보를 제공한 레코드가 어떤 것인지 더 쉽게 식별될 수 있습니다.