AI는 숨 쉬듯이 구라를 친다

RAG, 그게 뭔데

by the게으름

바이브코딩 107

AI는 숨 쉬듯이 구라를 친다

RAG, 그게 뭔데 오덕아.


이 AI가 맨날 구라쳐서 빡쳤다

진짜다.

AI: auth.ts 32번째 줄 수정했습니다.

가보면 공백.

AI: 아, 34번째 줄입니다.

가보면 주석.

이쯤 되면 깨닫는다.

얘는 틀리는 게 아니다.

안 보고 말하는 거다.


AI는 내 코드를 본 적이 없다

우리는 착각한다.

AI가 내 프로젝트를 이해하고 있겠지.


아니다.

LLM은

“읽는 기계”가 아니라

“이어 말하는 기계”다.

파일을 실제로 안 보면

패턴으로 메꾼다.

패턴은 그럴듯하다.

그래서 더 위험하다.


그래서 빡쳐서 결론을 냈다

상상하지 말고

먼저 찾아보고 말해.

이게 RAG다.

거창한 약자 아니다.

Retrieval Augmented Generation = 생성하기 전에 조회하라.


한 줄 요약 끝.


1단계: 있는지부터 확인해라

내가 제일 먼저 한 건 이거다.

“파일이 실제로 존재하는지 확인하고 말해.”


어떻게?

아주 단순한 리눅스 명령어(find, grep)를 쥐여준다.


이 한 줄.

이거 안 하면 이런 일이 벌어진다.


AI: user_login.js 수정하겠습니다.


없는 파일이다. 그럼

- ai는 "어 없네? 어디갔지? 찾아볼까? 여기있나?" 이렇게 있을만한 곳을 찾기 시작한다.

그래서 이렇게 고정했다.


수정 전에

1. 관련 파일을 실제로 검색하고

2. 경로를 명시한 뒤 작업해.


이것만 해도

헛소리의 절반이 사라진다.


[적용 후]

AI: (잠시 멈춤) 시스템이 몰래 find ./src -name "*login*" 명령어를 때려봄.
AI: "아, 찾아보니 UserLogin.tsx가 있네요. 이걸 고치겠습니다."


이건 고급 기술 아니다.

그냥 “본 뒤에 말해”다.


맨 밑에 일단 간단한 프롬프트 하나 있으니, 나중에 복붙해서 넣으시라.


근데 이걸로는 부족했다

파일 하나만 보고 고치면

또 틀린다.

왜냐면 코드는 텍스트가 아니라

연결이기 때문이다.

login.ts

├──import AuthTypefrom'./types'

├──import dbfrom'./db'


하수 AI는 이렇게 움직인다.

login.ts만 열어보고 수정한다.


그리고 바로 이런 대사가 나온다.


“AuthType 정의가 어디 있나요?”


그럼 또 설명해줘야 한다.

또 시간 날린다.

또 빡친다


그래서 두 번째 규칙을 추가했다

고치려는 파일이 import하는 파일도 같이 가져와라.


이 한 줄.

이게 진짜 RAG다.

키워드 검색은

파일 하나를 가져온다.

의존성 기반 검색은

연결된 파일까지 같이 가져온다.

"파일을 수정할 때는, 그 파일 상단에 import 된 파일들도 찾아서 내용을 먼저 읽고 계획을 세워라."


이 한 줄이 AI의 지능을 2배로 올려준다.

차이는 단순하다.

[눈치 없는 AI]

login.ts

파일만 덜렁 가져온다.코드를 고치려는데

AuthType

이 뭔지 모른다.에러를 낸다.


[눈치 챙긴 AI]

일단 login.ts를 찾는다.읽어보니 맨 위에 import { AuthType } from './types'라고 써있네?
"아, 주인이 말 안 했지만 types.ts도 필요하겠군."


types.ts도 알아서 챙겨온다.


이걸 기술적으로는 "의존성 그래프 탐색"이라고 하는데,

쉽게 말하면 "눈치껏 족보 찾기"다.

만약 여러분이 Cursor나 Claude를 쓴다면,

설정 파일(.cursorrules 같은 곳)에 이 한 줄만 추가해라.


이걸 안 하면

AI는 항상 반쪽짜리 컨텍스트로 수정한다.

그리고 반쪽짜리 수정은

언젠가 터진다.


그래서 내가 실제로 고정한 문장

이건 바로 써먹을 수 있다.

작업 전:1. 수정 대상 파일 검색2. 해당 파일이 import하는 내부 모듈 목록 정리3. 관련 파일을 함께 읽은 뒤 수정 시작

이 세 줄을 고정했다.

그 이후로

“이거 어디 정의돼 있나요?”

라는 질문이 거의 사라졌다.


여기까지가 RAG 1라운드다

요약하면 이거다.

AI가 구라치는 이유는 두 가지다.

파일을 안 보고 말해서

연결을 모르고 고쳐서


그래서 해결책도 두 줄이다.

먼저 조회해라

연결된 것까지 같이 가져와라


이게 내가 RAG를 붙인 이유다.

빡쳐서 만든 안전장치다.


근데 또 문제가 생겼다

연결된 파일을 다 가져오면

이번엔 AI 머리가 터진다.

파일 15개만 넘어가도

컨텍스트가 꽉 찬다.

이번엔 구라가 아니라

혼란이 생긴다.

그래서 다음 단계가 필요해졌다.

다 가져오되,


중요한 것만 남기는 기술.



RAG Protocol: Grounding & Dependency Check