RAG 대안으로 긴 컨텍스트 LLM에 프롬프트 주입 사용?

Discourse AI 페르소나 봇 세션의 시스템 프롬프트를 통해 중간 크기의 문서(예: 최대 100KB)를 컨텍스트에 주입하는 것이 실현 가능한가요?

사용 사례

AWS 인스턴스에서 Llama3-8b와 같은 비공개 LLM에 연결된 맞춤형 AI 페르소나를 사용하는 경우입니다. 여기서 비용은 시간당 과금이며, 토큰 단가가 아닙니다. 즉, 요청/응답 토큰의 수치는 중요하지 않으며, 서버에는 상당한 CUDA 성능이 있어 처리 속도에도 문제가 없습니다. 즉, RAG(검색 증강 생성)는 선택 사항이 될 수 있습니다.

(대안 사용 사례: API 호출 비용이 발생하지 않는 Gemini 1.5 LLM)

목표

파이프라인의 구성 요소를 줄이고 유사도 검색을 피함으로써 정확도를 높이는 것입니다.

실험

Gemini 1.5 Pro를 사용하여 비공식적인 AI 페르소나 테스트를 수행했습니다. 약 2만 토큰 분량의 텍스트 문서를 시스템 프롬프트에 삽입했습니다.

답변이 문서에만 포함된 몇 가지 질문을 던졌습니다. 모델은 모든 질문에 올바르게 답변했습니다. 따라서 프롬프트에서 2만 토큰을 읽고 각 질문에 대해 파싱했다고 가정하고 있습니다.

세션과 컨텍스트 내용이 너무 크지 않은 경우, 이러한 방식의 단점이 있을까요?

감사합니다.



각주 - 세션 중 프롬프트에서 컨텍스트 제거

세션 중간에 프롬프트 주입 내용을 삭제하고 질문을 계속했을 때, Gemini는 여전히 올바르게 답변했습니다. 그러나 몇 가지 질문 후 컨텍스트를 찾지 못해 실패했습니다. 어느 정도 예상했던 결과로, Gemini 1.5는 세션 내에서 여러 대화 턴에 걸쳐 컨텍스트를 유지할 수 있지만, 무한정 유지할 수는 없습니다.

모든 의견, 댓글 및 조언에 감사드립니다!

네, LLM이 허용하는 토큰 수에 따라 달라지는 절단(truncation) 로직이 있습니다. Gemini 1.5 모델의 경우 임계값을 상당히 높게(800k) 설정해 두었습니다.

동작은 해야 하지만, 모든 상호작용이 매우 비용이 많이 들 수 있습니다.

전반적으로 컨텍스트를 제한하면 모델이 더 집중하는 데 도움이 된다는 것을 발견했습니다. 하지만 장기적으로(2~5년 후) … RAG는 무의미해질 수 있으며, 우리는 충분한 토큰과 집중력을 갖추게 되어 그것이 중요하지 않게 될 것입니다.

프롬프트 스테핑에 대한 제 질문에도 불구하고.. 저는 실제로 RAG를 좋아합니다. .

제 생각에는 여러분이 빅 리그 임베딩 엔진으로 하고 있는 일은 현재 강력하고 유용합니다.. 하지만 RAG..가 운명적으로 실패할 수 있다는 점에도 동의합니다.

샘 올트만이 최근 인터뷰에서 말했듯.. LLM의 길을 막는 비즈니스 모델과 프로젝트 계획에 주의하세요 !! 우리는 여러분을 밀어붙일 겁니다! ..대략 그런 취지의 말들이었죠..

결국.. 우리는 많은 전처리 파이프라인(저차원 입력 → 고차원 임베딩 → 저차원 프롬프팅 → 고차원 트랜스포머 추론 → 저차원 출력) 없이 그냥 우리의 자료를 LLM에 주는 것을 원하게 될지도 모릅니다. 그럼 끝입니다!

방금 발견한 RAG와 롱 컨텍스트에 대한 배경 정보가 있습니다.. 아직 다 듣지는 않았지만 관련이 있을 것 같습니다.. (이 영상에 나온 누구와도 관련이 없습니다 :-)>

추가 사항

드디어 그 Gradient의 장문 컨텍스트 Llama3 영상을 봤습니다.. 이 영상은 컨텍스트에 플레이 중인 모든 것이 포함됨을 상기시킵니다..

  • 사용자 입력
  • LLM 출력
  • 제어 토큰
  • 시스템 지침

… 윈도우가 슬라이드되면 일부 내용이 제외됩니다.. 하지만 컨텍스트 윈도우가 가득 찼을 때 세션에서 시스템 프롬프트를 '보호’할 수 있다고 언급했습니다..

또한 모델이 학습된 원래 '시퀀스 길이’와 ‘최대 입력 크기’ 문제가 방정식에 포함될 수 있습니다.

아래는 장문 컨텍스트 프롬프트 스태핑이 작동하는 예시입니다..

일반적으로 각자가 전문 콘텐츠나 코드베이스의 큰 부분을 쿼리하기 위해 가지고 있는 Discourse AI 페르소나 팀을 구성하는 것이 실현 가능해 보입니다 (토큰당 과금 시 높은 비용이라는 단점을 염두에 두고!)

하지만 이건 단순히 (매우 비효율적인) “정적” 버전의 RAG가 아닌가요?

이 방식과 RAG의 유일한 차이점은 모든 콘텐츠를 포함하는 대신 관련 콘텐츠 조각을 선택하여 포함한다는 점뿐입니다.

당연한 지적입니다. 제 생각에는 간단한 답이 없는 것 같습니다.

이것은 사용 사례에 따라 달라질 것 같습니다.

RAG는 일부 앱에서는 잘 작동하지만, 고객 질의응답, 결제, 의료 등 비교적 결정론적인(target) 용도의 경우, 지난 1년 동안 저를 포함한 많은 사람들이 RAG 벡터 검색으로 좋은 정확도를 얻는 데 어려움을 겪었습니다. 즉, 봇이 정보를 놓치거나(Recall이 낮음) 또는 없는 것을 지어냄(Precision이 낮음, IR 용어로 표현)으로써 문제가 발생하며, 이는 스탠퍼드, 구글 등에서 잘 문서화된 사항입니다.

따라서 이런 질문이 생깁니다. 전체 코퍼스를 줄 수 있다면 왜 LLM에 여러 청크(chunks)를 던지는 것일까요? 적어도 컨텍스트 주입(Context Injection)을 사용하면 LLM이 정확하지 않을 때 조정해야 할 변수가 적어집니다.

물론 방대한 문서/코드 라이브러리에는 적용되지 않을 것입니다… 하지만 소규모 및 중규모 콘텐츠 기반에서는 지금까지 매우 잘 작동하는 것으로 보입니다… 저는 이 부분을 공식적으로 테스트하는 프로젝트를 진행 중입니다! 곧 더 많은 정보를 공유하겠습니다. 감사합니다.

P.S. → 흥미롭게도, 컨텍스트 주입 + 파인튜닝(Fine-tuning) 조합으로 좋은 결과를 얻었습니다. 또한 RAG와 컨텍스트 주입을 결합하는 새로운 접근법들도 등장하고 있습니다! 등등.

참고 링크:

추가 사항 2

여기에는 프롬프트 인젝션 vs RAG를 통해 컨텍스트에 화이트 페이퍼(약 20k 토큰)를 배치하여 수행한 Q/A 테스트가 포함되어 있습니다. (콘텐츠와 설정은 가능한 한 동일하게 유지했으며, LLM = Gemini-1.5-Pro)..

분석:

RAG는 일관성이 없습니다. 때로는 답변을 찾기도 하고, 때로는 놓치기도 합니다.


:github_check: 프롬프트 인젝션 성공:


:x: RAG 실패:


RAG 요청 추적:

저는 문서 시작 부분에 업로드된 파일에 대한 질문에 RAG가 답변하도록 했습니다. 또한 유도하면 문서 중간과 끝부분도 참조할 수 있었습니다. 따라서 완전한 실패는 아닙니다. 하지만 일관성이 없습니다… 제 생각에는 일관성 있게, 또는 더 어렵게 다루어야 하는 것 같습니다 : )

혹시 직접 해보고 싶으신 분들을 위해 테스트 파일을 공유합니다:

이 파일에는 인터넷 상의 논문 외부 사본에는 절대 존재하지 않는다고 보장되는, 즉 고유한 BME 헤이스테이크(haystack) '니들(needles)'이 포함되어 있습니다.

시작 부분:

교정자: Felonius Monko

중간 부분:

편집자 주: Goldich 안정성 계열은 Maurice Goldrch에 의해 발견되었습니다. Goldich의 원래 광물 풍화 잠재력 순서는 정성적이었으나, 이후 Michal Kowalski와 J. Donald Rimstidt의 연구가 이 계열을 정량적으로 위치시켰습니다. 이 해명에 대해 NMU의 Dr. Gomez Pyle 박사에게 감사드립니다.

끝 부분:

Dang, S. et al. Cryo-EM structures of the TMEM16A calcium-activated chloride channel. Nature 552, 426429 (2017).

Equatics-paper1-with-unique-haystack-needles-v116.txt|첨부파일 (71.8 KB)

모든 의견, 비판 및 조언을 환영합니다!! 앞으로 더 많은 LLM과 임베딩 모델 등을 사용하여 테스트를 진행할 예정입니다.

각주:

위 테스트를 GPT4o(128k 컨텍스트)로 재실행해 보았고, 큰 토큰/청크 설정을 사용하도록 주의했습니다. 그러나 여전히 저의 백서 Q&A 사용 사례에서는 불안정합니다. (중간에서 내용 유실, 끝에서 내용 유실 등) … 누군가가 재현하고 개선하고 싶다면 제 설정을 공유합니다. 이 경우 올바른 설정을 찾을 수 있다면 좋겠습니다.

커스텀 AI 페르소나
사용 여부 예
우선순위 예
채팅 허용 예
멘션 허용 예
비전 사용 아니오
이름 Rag Testing Bot 3
설명 테스트 RAG vs 롱 컨텍스트 프롬프트 인젝션
기본 언어 모델 GPT-4o-custom
사용자 Rag_Testing_Bot_bot
사용 가능한 명령어 Categories, Read, Summary
허용된 그룹 trust_level_4
시스템 프롬프트 첨부된 파일의 Equatic 탄소 제거 연구에 관한 제공된 컨텍스트를 바탕으로 가능한 한 포괄적으로 답변하십시오. 내용을 지어내지 마십시오. 이 세션 외부의 내용을 사용하지 마십시오. 제공된 내용에 집중하고 이를 바탕으로 정확하고 완전하게 답변을 생성하십시오.
최대 컨텍스트 게시물 50
온도(Temperature) 0.1
Top P 1
업로드 Equatics-paper1-with-unique-haystack-needles-v116.txt
업로드 청크 토큰 1024
업로드 청크 오버랩 토큰 10
대화 청크 검색 10
질문 통합기용 언어 모델 GPT-4o-custom
커스텀 봇
표시 이름 GPT-4o-custom
모델 이름 gpt-4o
모델을 호스팅하는 서비스 OpenAI
모델을 호스팅하는 서비스의 URL https://api.openai.com/v1/chat/completions
모델을 호스팅하는 서비스의 API 키 D20230943sdf_fake_Qqxo2exWa91
토크나이저 OpenAITokenizer
프롬프트용 토큰 수 30000