비전만 있으면 충분합니다: 시각 언어 모델을 사용한 지능형 문서 검색 시스템 구축(Vision RAG)

최신 AI 리소스7개월 전 업데이트 AI 공유 서클
10.7K 00

일반 소개

Vision-is-all-you-need는 문서 처리 영역에 시각 언어 모델링(VLM)을 적용하는 새로운 지평을 여는 혁신적인 시각적 RAG(검색 증강 생성) 시스템 데모 프로젝트입니다. 이 시스템은 기존의 텍스트 청킹 방식과 달리 시각 언어 모델을 직접 사용하여 PDF 파일의 페이지 이미지를 처리하고 벡터 형식으로 변환하여 저장합니다. 이 시스템은 효율적인 검색을 위해 QDrant 벡터 데이터베이스와 함께 핵심 시각 언어 모델로 ColPali를 채택하고, 지능형 Q&A를 위해 GPT4 또는 GPT4-mini 모델을 통합합니다. 이 프로젝트는 PDF 문서 가져오기, 이미지 변환, 벡터 저장, 지능형 검색에 이르는 전체 프로세스를 완벽하게 실현하고 편리한 API 인터페이스와 사용자 친화적인 프런트엔드 인터페이스를 제공하여 문서 지능형 처리 분야에 새로운 솔루션을 제공합니다.

Vision is All You Need:使用视觉语言模型构建智能文档检索系统(Vision RAG)

데모 주소: https://softlandia-ltd-prod--vision-is-all-you-need-web.modal.run/

 

기능 목록

  • PDF 페이지 임베딩시각적 언어 모델을 사용하여 PDF 파일의 페이지를 이미지로 변환하고 벡터로 삽입합니다.
  • 벡터 데이터베이스 스토리지Qdrant를 벡터 데이터베이스로 사용하여 임베디드 이미지 벡터를 저장합니다.
  • 문의 검색사용자가 임베드된 이미지와 유사한 벡터를 쿼리하고 응답을 생성할 수 있습니다.
  • API 인터페이스파일 업로드, 쿼리 및 검색 작업을 용이하게 하는 RESTful API 인터페이스를 제공합니다.
  • 프런트엔드 상호 작용통해 React 프런트엔드 인터페이스는 API와 상호 작용하여 사용자 친화적인 경험을 제공합니다.

 

도움말 사용

설치 프로세스

  1. Python 3.11 이상 설치::
   pip install modal
modal setup
  1. 환경 변수 구성만들기 .env 파일을 열고 다음을 추가합니다:
   OPENAI_API_KEY=your_openai_api_key
HF_TOKEN=your_huggingface_token
  1. 실행 예제::
   modal serve main.py

사용 예

  1. PDF 파일 업로드브라우저를 열고 모달에서 제공한 URL로 이동하여 URL에 다음을 추가합니다. /docs. 클릭 POST /collections 엔드포인트에서 Try it out 버튼을 클릭하여 PDF 파일을 업로드하고 실행합니다.
  2. 유사 페이지 쿼리사용 POST /search 엔드포인트를 호출하여 페이지 이미지와 쿼리를 OpenAI API로 전송하고 응답을 반환합니다.

프런트엔드 개발

  1. Node.js 설치::
   cd frontend
npm install
npm run dev
  1. 프런트엔드 환경 구성수정 : 수정 .env.development 파일에 백엔드 URL을 추가합니다:
   VITE_BACKEND_URL=your_backend_url
  1. 프론트엔드 시작::
   npm run dev

세부 운영 절차

  1. PDF 페이지 임베딩::
    • 활용 pypdfium PDF 페이지를 이미지로 변환하세요.
    • 이미지를 시각적 언어 모델(예: ColPali)로 전달하여 임베딩 벡터를 얻습니다.
    • Qdrant 벡터 데이터베이스에 임베딩 벡터를 저장합니다.
  2. 문의 검색::
    • 사용자가 쿼리를 입력하면 시각적 언어 모델을 통해 쿼리 임베딩 벡터가 얻어집니다.
    • 벡터 데이터베이스에서 유사한 임베딩 벡터를 검색합니다.
    • 쿼리와 가장 잘 일치하는 이미지가 모델(예: GPT4o)로 전달되어 응답을 생성합니다.
  3. API 사용::
    • PDF 파일 업로드: 다음을 통해 POST /collections 엔드포인트가 파일을 업로드합니다.
    • 유사한 페이지 쿼리: 기준 POST /search 엔드포인트가 쿼리를 보내고 응답을 받습니다.
  4. 프런트엔드 상호 작용::
    • React 프런트엔드 인터페이스를 사용하여 API와 상호 작용하세요.
    • 파일 업로드, 쿼리 입력 및 결과 표시 기능을 제공합니다.

 

참고 문서: 헝겊 만들기? 덩어리 만들기에 지치셨나요? 비전만 있으면 됩니다!

Vision is All You Need:使用视觉语言模型构建智能文档检索系统(Vision RAG)

 

대부분의 최신 생성 AI(GenAI) 솔루션의 핵심에는 다음과 같은 것이 있습니다. RAG 검색 증강 생성(RAG) 방식은 응용 AI 분야의 소프트웨어 엔지니어들이 흔히 "RAG"라고 부르는 방식입니다. 응용 AI 분야의 소프트웨어 엔지니어들은 이를 흔히 "RAG"라고 부릅니다. RAG를 사용하면 언어 모델이 조직의 독점 데이터를 기반으로 질문에 답할 수 있습니다.

RAG의 첫 글자 R은 검색(검색), 검색 프로세스를 의미합니다. 사용자가 GenAI 로봇에게 질문을 하면 백그라운드의 검색 엔진이 질문과 관련된 자료를 정확히 찾아내어 환각 없는 완벽한 답변을 생성해야 하며, A와 G는 각각 검색된 데이터를 언어 모델에 입력하는 것과 최종 답변을 생성하는 것을 의미합니다.

이 백서에서는 RAG 아키텍처를 구현하는 데 있어 가장 중요하고 시간이 많이 소요되며 까다로운 부분인 검색 프로세스에 초점을 맞춥니다. 먼저 검색의 일반적인 개념을 살펴본 다음 기존의 청크 기반 RAG 검색 메커니즘을 소개합니다. 그런 다음 백서의 후반부에서는 검색 및 생성을 위해 이미지 데이터에 의존하는 새로운 RAG 접근 방식에 중점을 둡니다.

정보 검색의 간략한 역사

Google을 비롯한 주요 검색 엔진 회사들은 수십 년 동안 정보 검색 문제를 해결하기 위해 노력해 왔으며, 그 핵심 단어는 '노력'입니다. 정보 검색은 여전히 생각만큼 간단하지 않습니다. 그 이유 중 하나는 인간은 기계와 다르게 정보를 처리하기 때문입니다. 다양한 데이터 세트에서 자연어를 합리적인 검색 쿼리로 변환하는 것은 쉽지 않습니다. Google의 고급 사용자는 검색 엔진을 조작하는 모든 가능한 기술에 익숙할 수 있습니다. 하지만 그 과정은 여전히 번거롭고 검색 결과는 상당히 불만족스러울 수 있습니다.

언어 모델의 발전으로 정보 검색은 자연어 인터페이스를 갖추게 되었습니다. 그러나 언어 모델은 학습 데이터가 학습 당시의 스냅샷을 반영하기 때문에 사실에 기반한 정보를 제공하는 데 있어서는 성능이 떨어집니다. 또한 지식이 모델에 압축되어 있어 잘 알려진 착시 현상도 피할 수 없습니다. 결국 언어 모델은 검색 엔진이 아니라 추론 기계입니다.

언어 모델의 장점은 데이터 샘플과 지침이 제공되고 이러한 입력에 따라 응답하도록 요청할 수 있다는 것입니다. 이는 ChatGPT 와 유사한 대화형 AI 인터페이스의 일반적인 사용 사례를 살펴보세요. 하지만 사람들은 게으르기 때문에 같은 노력으로 직접 작업을 수행할 수도 있습니다. 그렇기 때문에 우리는 적용된 AI 솔루션에 간단히 질문하고 정확한 정보를 바탕으로 답변을 얻을 수 있는 RAG가 필요합니다. 적어도 검색이 완벽한 세상에서는 이것이 이상적인 상황입니다.

기존 RAG에서 검색은 어떻게 작동하나요?

RAG 검색 방법은 RAG 구현 자체만큼이나 다양합니다. 검색은 항상 최적화 문제이며 모든 시나리오에 적용할 수 있는 일반적인 솔루션은 없습니다. 검색이든 다른 기능이든 각각의 특정 솔루션에 맞게 AI 아키텍처를 맞춤화해야 합니다.

그럼에도 불구하고 일반적인 기본 솔루션은 소위 청킹 기법이라고 불리는 것입니다. 이 접근 방식에서는 데이터베이스에 저장된 정보(일반적으로 문서)를 대략 단락 크기 정도의 작은 청크로 분할합니다. 그런 다음 각 청크는 언어 모델과 관련된 임베딩 모델을 통해 숫자 벡터로 변환됩니다. 생성된 숫자 벡터는 전용 벡터 데이터베이스에 저장됩니다.

간단한 벡터 데이터베이스 검색은 다음과 같이 구현됩니다:

  1. 사용자가 질문을 합니다.
  2. 문제에서 임베딩 벡터를 생성합니다.
  3. 벡터 데이터베이스에서 시맨틱 검색을 수행합니다.
    1. 시맨틱 검색에서는 텍스트 블록의 문맥과 의미를 고려하여 데이터베이스의 질문 벡터와 벡터 사이의 근접성을 수학적으로 측정합니다.
  4. 예를 들어 벡터 검색은 가장 일치하는 10개의 텍스트 블록을 반환합니다.

그런 다음 검색된 텍스트 블록을 언어 모델의 컨텍스트(단서)에 삽입하고 모델에 원래 질문에 대한 답을 생성하도록 요청합니다. 검색 후 이 두 단계를 RAG의 A 및 G 단계라고 합니다.

색인화 전 청킹 기법 및 기타 사전 처리는 검색 품질에 상당한 영향을 미칠 수 있습니다. 이러한 전처리 방법에는 수십 가지가 있으며, 검색 후 정보를 정리하거나 필터링(재정렬이라고 함)할 수도 있습니다. 벡터 검색 외에도 기존의 키워드 검색이나 구조화된 정보를 검색하기 위한 다른 프로그래밍 인터페이스도 사용할 수 있습니다. 예를 들어, 사용자 질문에 따라 새로운 SQL 또는 API 쿼리를 생성하기 위한 텍스트-to-SQL 또는 텍스트-to-API 기술이 있습니다. 비정형 데이터의 경우 청킹과 벡터 검색이 가장 일반적으로 사용되는 검색 기술입니다.

청킹에도 문제가 없는 것은 아닙니다. 다양한 파일 및 데이터 형식을 처리하는 것은 번거롭고 각 형식에 대해 별도의 청킹 코드를 작성해야 합니다. 상용 소프트웨어 라이브러리가 있긴 하지만 완벽하지는 않습니다. 또한 청크의 크기와 겹치는 영역도 고려해야 합니다. 다음으로 이미지, 차트, 표 및 기타 데이터의 경우 시각적 정보와 그 주변 맥락(제목, 글꼴 크기 및 기타 미묘한 시각적 단서 등)을 이해하는 것이 매우 중요한 과제에 직면하게 됩니다. 그리고 이러한 단서들은 청킹 기법에서는 완전히 사라집니다.

이러한 청크가 완전히 불필요하고 검색이 마치 사람이 문서의 전체 페이지를 탐색하는 것과 같다면 어떨까요?

이미지가 시각적 정보를 유지합니다.

첨단 멀티모달 모델의 개발로 이미지 기반 검색 방식이 가능해졌습니다. 이미지 데이터를 기반으로 한 대표적인 AI 솔루션은 전적으로 카메라에 의존하는 Tesla의 자율 주행 솔루션입니다. 이 접근 방식의 기본 개념은 인간이 주로 시각을 통해 주변 환경을 인식한다는 것입니다.

RAG 구현에도 동일한 개념이 적용됩니다. 청킹과 달리 전체 페이지가 이미지로, 즉 사람이 볼 때와 동일한 형식으로 직접 색인됩니다. 예를 들어, PDF 문서의 각 페이지는 전용 AI 모델에 이미지로 공급됩니다(예 콜팔리), 모델은 시각적 콘텐츠와 텍스트를 기반으로 벡터 표현을 생성합니다. 그런 다음 이러한 벡터는 벡터 데이터베이스에 추가됩니다. 이 새로운 RAG 아키텍처를 시각적 검색 강화 세대(비전 검색 증강 세대, 또는 V-RAG).

이 접근 방식의 장점은 멀티모달 모델이 텍스트와 시각적 요소를 모두 고려한 벡터 표현을 생성하기 때문에 기존 방식보다 검색 정확도가 높다는 점입니다. 검색 결과는 문서의 전체 페이지가 되며, 이는 GPT-4와 같은 강력한 멀티모달 모델에 이미지로 공급됩니다. 이 모델은 차트나 표의 정보를 직접 참조할 수 있습니다.

V-RAG를 사용하면 먼저 복잡한 구조(예: 다이어그램이나 표)를 텍스트로 추출한 다음, 그 텍스트를 새로운 형식으로 재구성하여 벡터 데이터베이스에 저장하고, 이를 검색하고, 일관된 힌트를 형성하도록 다시 정렬하여 궁극적으로 답변을 생성할 필요가 없습니다. 이는 오래된 매뉴얼, 표가 많은 문서, 콘텐츠가 단순한 텍스트가 아닌 사람 중심의 문서 형식을 다룰 때 상당한 이점이 됩니다. 또한 색인화는 기존의 레이아웃 감지 및 OCR 프로세스보다 훨씬 빠릅니다.

Vision is All You Need:使用视觉语言模型构建智能文档检索系统(Vision RAG)

ColPali 논문의 색인 속도 통계

그럼에도 불구하고 문서에서 텍스트를 추출하는 것은 여전히 가치가 있으며 이미지 검색과 함께 도움을 제공할 수 있습니다. 그러나 청킹은 곧 AI 검색 시스템을 구현하는 방법으로 사용할 수 있는 많은 옵션 중 하나가 될 것입니다.

실무에서의 Vision-RAG: 팔리젬마, 콜팔리 및 벡터 데이터베이스

기존의 텍스트 기반 RAG와 달리 V-RAG를 구현하려면 여전히 특수 모델과 GPU 연산에 액세스해야 합니다. V-RAG를 가장 잘 구현하는 방법은 이 목적을 위해 특별히 개발된 모델을 사용하는 것입니다. 콜팔리.

콜팔리는 콜버트 모델에서 도입한 다중 벡터 검색 방식과 구글의 멀티모달 팔리젬마 언어 모델을 기반으로 합니다. 콜팔리는 멀티모달 검색 모델로서 텍스트 콘텐츠뿐만 아니라 문서의 시각적 요소도 이해합니다. 실제로 ColPali 개발자들은 시각적 영역까지 포함하도록 ColBERT의 텍스트 기반 검색 접근 방식을 확장하여 Paligemma를 활용했습니다.

임베딩을 생성할 때 ColPali는 각 이미지를 32 x 32 그리드로 나누고, 각 이미지에는 약 1024개의 청크가 있으며, 각 청크는 128차원 벡터로 표시됩니다. 각 이미지가 '이미지 설명' 명령 토큰에도 첨부되므로 총 청크 수는 1030개입니다.

사용자의 텍스트 기반 쿼리는 검색 프로세스 중에 청크와 쿼리 부분을 비교하기 위해 동일한 임베딩 공간으로 변환됩니다. 검색 프로세스 자체는 소위 MaxSim 메서드를 기반으로 합니다. 이 문서 에 자세히 설명되어 있습니다. 이 검색 방법은 다중 벡터 검색을 지원하는 많은 벡터 데이터베이스에 구현되어 있습니다.

비전만 있으면 됩니다 - V-RAG 데모 및 코드

V-RAG 데모를 만들었으며 코드는 Softlandia의 GitHub 리포지토리에서 확인할 수 있습니다! 비전이 필요한 모든 것 에서 찾아보세요. 저희 계정에서 AI를 적용한 다른 데모도 확인할 수 있습니다!

콜팔리를 실행하려면 많은 메모리를 가진 GPU가 필요하므로 가장 쉬운 방법은 GPU를 사용할 수 있는 클라우드 플랫폼에서 실행하는 것입니다. 이러한 이유로 저희는 서버 없이도 간편하고 저렴하게 GPU를 사용할 수 있는 우수한 모달 플랫폼을 선택했습니다.

대부분의 온라인 학술용 Jupyter Notebook 프레젠테이션과 달리, 저희는 비전만 있으면 충분합니다 데모는 독특한 실습 경험을 제공합니다. 리포지토리를 복제하여 직접 배포하고 클라우드 GPU에서 전체 파이프라인을 몇 분 안에 무료로 실행할 수 있습니다. 이 엔드투엔드 애플리케이션 AI 엔지니어링의 예는 대부분의 다른 데모와는 비교할 수 없는 실제 경험을 제공한다는 점에서 돋보입니다.

이 데모에서는 또한 Qdrant Qdrant의 인메모리 버전입니다. 데모를 실행할 때 기본 컨테이너가 더 이상 존재하지 않으면 인덱싱된 데이터가 사라집니다.Qdrant는 버전 1.10.0부터 다중 벡터 검색을 지원합니다. 이 데모는 pypdfium2 라이브러리를 사용하여 페이지를 이미지로 변환하는 PDF 파일만 지원합니다. 또한, ColPali 개발자가 만든 transformers 라이브러리와 colpali-engine을 사용하여 ColPali 모델을 실행했습니다. opencv-python-headless와 같은 다른 라이브러리도 사용 중입니다(이 라이브러리는 제가 개발한 것입니다).

이 데모는 인덱싱과 질문을 위한 HTTP 인터페이스를 제공합니다. 그 위에 React를 사용해 간단한 사용자 인터페이스를 구축했습니다. UI는 또한 각 토큰 의 관심도 맵에 표시되므로 ColPali 모델이 중요하다고 생각하는 이미지 부분을 쉽게 확인할 수 있습니다.

Vision is All You Need:使用视觉语言模型构建智能文档检索系统(Vision RAG)

비전 이즈 올 유 니드 데모 스크린샷

비전이 정말 필요한가요?

데모 제목과 달리 ColPali와 같은 검색 모델은 특히 다국어 데이터의 경우 아직 충분하지 않습니다. 이러한 모델은 일반적으로 제한된 수의 예제로 학습되며, 거의 항상 특정 유형의 PDF 파일입니다. 따라서 이 데모는 PDF 파일만 지원합니다.

또 다른 문제는 이미지 데이터의 크기와 그로부터 계산되는 임베딩입니다. 이러한 데이터는 상당한 공간을 차지하며, 대규모 데이터 세트에서 검색하려면 기존의 1차원 벡터 검색보다 훨씬 더 많은 계산 능력이 필요합니다. 이 문제는 임베딩을 더 작은 형태(심지어 이진까지)로 양자화함으로써 부분적으로 해결할 수 있습니다. 하지만 이렇게 하면 정보가 손실되고 검색 정확도가 약간 떨어집니다. 데모에서는 최적화가 중요하지 않기 때문에 아직 정량화가 구현되지 않았습니다. 또한 다음 사항에 유의해야 합니다. Qdrant는 아직 바이너리 벡터를 직접 지원하지 않습니다.하지만 Qdrant에서 정량화 활성화하기를 입력하면 Qdrant가 내부적으로 벡터를 최적화합니다. 그러나 해밍 거리에 기반한 MaxSim은 아직 지원되지 않습니다.

따라서 최종 페이지 검색을 위해 ColPali를 사용하기 전에 기존 키워드 기반 검색과 함께 초기 필터링을 수행하는 것이 좋습니다.

멀티모달 검색 모델은 전통적으로 텍스트 임베딩을 생성하는 임베딩 모델과 마찬가지로 계속 발전해 나갈 것입니다. OpenAI 또는 이와 유사한 조직에서 검색 정확도를 한 단계 끌어올릴 수 있는 ColPali-와 유사한 임베딩 모델을 곧 출시할 것이라고 확신합니다. 하지만 이렇게 되면 청킹과 기존의 벡터 검색 방식에 기반한 현재의 모든 시스템이 뒤집힐 것입니다.

유연한 AI 아키텍처가 없으면 뒤처지게 됩니다.

AI 분야에서는 언어 모델, 검색 방법 및 기타 혁신이 빠른 속도로 출시되고 있습니다. 이러한 혁신 자체보다 더 중요한 것은 이러한 혁신을 빠르게 도입하는 능력이며, 이는 경쟁사보다 빠른 기업에게 상당한 경쟁 우위를 제공합니다.

따라서 검색 기능을 포함한 소프트웨어의 AI 아키텍처는 최신 기술 혁신에 빠르게 적응할 수 있도록 유연하고 확장 가능해야 합니다. 개발이 가속화됨에 따라 시스템의 핵심 아키텍처가 단일 솔루션에 국한되지 않고 전통적인 텍스트 검색, 멀티모달 이미지 검색, 완전히 새로운 검색 모델 등 다양한 검색 방법을 지원하는 것이 중요합니다.

콜팔리는 미래를 위한 빙산의 일각에 불과합니다. 미래의 RAG 솔루션은 여러 데이터 소스와 검색 기술을 결합할 것이며, 민첩하고 사용자 정의 가능한 아키텍처만이 이를 원활하게 통합할 수 있게 해줄 것입니다.

이 문제를 해결하기 위해 다음과 같은 서비스를 제공합니다:

  • 기존 AI 아키텍처의 상태 평가
    • 기술 책임자 및 개발자와 함께 코드 수준의 세부 정보를 포함하여 AI 기술에 대해 자세히 알아보세요.
    • 검색 방법, 확장성, 아키텍처 유연성, 보안, 모범 사례에 따라 (생성) AI가 사용되고 있는지 여부를 조사합니다.
    • 개선 사항을 제안하고 개발을 위한 구체적인 다음 단계를 나열합니다.
  • 팀의 일부로 AI 기능 또는 AI 플랫폼 구현하기
    • 전담 애플리케이션 AI 엔지니어가 AI 프로젝트가 다른 개발 작업에 뒤처지지 않도록 보장합니다.
  • 아웃소싱 제품 개발팀으로서 AI 제품 개발
    • 처음부터 끝까지 완벽한 AI 기반 솔루션을 제공합니다.

유니티는 고객이 AI 도입을 가속화하고 원활한 통합을 보장함으로써 상당한 경쟁 우위를 확보할 수 있도록 지원합니다. 더 자세히 알고 싶으시다면 귀사가 AI 개발의 선두를 유지할 수 있도록 어떻게 지원할 수 있는지 문의해 주세요.

© 저작권 정책

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...