Computer >> 컴퓨터 >  >> 프로그램 작성 >> Redis

Redis를 사용하여 강력한 텍스트 랭커를 만드는 방법

대부분의 사람들이 스마트폰 없이 집을 나서기 힘든 세상에서 산다는 것은 Google이 우리에게서 결코 멀지 않다는 것을 의미합니다. Google 검색 엔진의 검색어를 통해 거의 모든 질문에 대한 답변을 즉시 찾을 수 있습니다.

검색 엔진(및 무한한 정보에 대한 액세스)은 일상 생활에 통합되어 많은 사람들이 검색 엔진에 엄청나게 의존하게 되었습니다. 그리고 최적의 상태가 되려면 Google 및 기타 기술 대기업이 설정한 높은 표준으로 인해 쿼리에 대한 답변을 즉시 검색해야 합니다.

모든 지연, 지연 또는 지연은 사용자 경험을 방해합니다. 이것이 이 런치패드 앱 Alexis가 이 장애를 극복하기 위해 Redis를 기본 데이터베이스로 사용하는 이유입니다.

이 애플리케이션의 창시자인 Bobby Donchev는 RedisAI 및 RediSearch의 기능을 활용하여 최대 효율성으로 쿼리에 대한 응답으로 말뭉치에서 정보를 검색했습니다. 사용자는 PDF를 색인화하고 간단한 UI를 사용하여 문서에서 정보를 추출할 수 있습니다.

Redis가 없으면 전체 검색 프로세스가 느려져서 Alexis의 기능을 방해할 수 있습니다. Bobby가 이 애플리케이션을 어떻게 조합했는지 살펴보겠습니다.

그러나 계속 진행하기 전에 Redis Launchpad에서 확인할 수 있는 다양한 애플리케이션이 있음을 강조하고 싶습니다. 그러니 꼭 확인하세요!

  1. 무엇을 만들 것인가?
  2. 무엇이 필요합니까?
  3. 건축물
  4. 시작하기
  5. 데이터 저장 방식
  6. 데이터에 액세스하는 방법
  7. 작동 방식

1. 무엇을 만들 것인가?

최대 속도로 검색 쿼리를 검색할 수 있는 효율적인 텍스트 랭커를 구축할 수 있습니다. 사용자는 이 응용 프로그램을 활용하여 중요한 PDF를 색인화하고 문서에서 쉽게 답변을 추출할 수 있습니다.

각 단계를 시간 순서대로 살펴보고 애플리케이션을 구축하는 데 필요한 구성 요소를 강조합니다.

2. 무엇이 필요합니까?
  • RediSearch : 색인, 쿼리 및 전체 텍스트 검색 엔진 
  • RedisAI : 딥 러닝/머신 러닝 모델을 실행하여 데이터를 관리하고 지연 시간을 줄입니다.
  • Redis 스트림 : 데이터 소비 관리 
  • NodeJS : 웹 브라우저 외부에서 JavaScript 코드를 실행하는 오픈 소스, 크로스 플랫폼으로 사용
  • RedisJSON : ECMA-404 JSON 데이터 교환 표준을 기본 데이터 유형으로 구현합니다.

3. 건축

검색자의 쿼리에 대한 답변 제공은 두 단계로 이루어집니다.

  1. 먼저, 답변을 포함할 가능성이 높은 텍스트를 선택합니다. 이 단계에서는 BM25 순위 기능과 함께 RediSearch를 사용해야 합니다.
  2. RedisAI에 로드된 Transformer AI 모델을 사용하여 텍스트의 답변 범위를 식별할 수 있습니다.

첫 번째 단계에서 RediSearch를 사용하면 검색 공간을 크게 줄일 수 있습니다. 이렇게 하면 앱의 전반적인 경험이 빨라집니다. 그런 다음 백엔드에서 typescript와 함께 NodeJS를 사용하고 프런트엔드에서 typescript로 React를 사용해야 합니다.

RedisAI 및 RediSearch를 사용하는 것 외에도 Redis Streams로 구현된 비동기 작업자와 사용자 모델에 RedisJSON을 활용하게 됩니다.

웹 서버는 다음 엔드포인트가 있는 익스프레스 프레임워크로 노출됩니다.

앱을 등록하고 로그인하면 색인이 생성된 라이브러리에 문서를 추가할 수 있습니다. PDF가 업로드되면 이벤트가 Redis Streams에 기록됩니다. 그 후 소비자 그룹의 누군가가 비동기 처리를 위해 이벤트를 선택합니다.

그런 다음 PDF를 처리하고 일부 정리를 적용하고 PDF를 RediSearch로 인덱싱된 Redis 해시에 저장할 수 있습니다. 이제 서버에 자연스러운 쿼리를 보낼 수 있으며 'kubernetes 배포', 'DDD 루트 집계' 등과 같은 기본 키워드 검색에 국한되지 않습니다. 

대신 더 관련성 높은 검색어를 검색할 수 있습니다.

순서도

다음은 Alexis가 작동하는 방식에 대한 일반적인 개요입니다.

Redis를 사용하여 강력한 텍스트 랭커를 만드는 방법 사용자가 UI에 쿼리를 입력하면 RediSearch로 전송됩니다.
  • RediSearch와 BM25 기능 모두 키워드를 사용하여 활성화되어 가장 의미 있는 콘텐츠를 찾습니다.
  • 이 콘텐츠는 쿼리와 함께 RedisAI로 전송되어 사용자의 쿼리와 가장 관련성이 높은 답변을 비교하고 결정합니다.
  •  PDF 업로드 및 PDF 콘텐츠 색인 생성

    Redis를 사용하여 강력한 텍스트 랭커를 만드는 방법 사용자가 검색 엔진에 질문을 입력합니다.
  • RediSearch는 PDF를 색인화하고 이 쿼리에 대한 답변을 검색합니다.
  • RedisAI는 추론을 실행하고 여러 가지 가능한 답변을 가져옵니다.
  • RedisAI는 각 답변을 비교하여 쿼리와 가장 관련성이 높은 답변을 결정합니다.
  • 드디어 사용자에게 답변이 표시됩니다.
  • 4. 시작하기

    1단계:필수 구성 요소 설치

    • Node - v12.x.x
    • NPM - v6.x.x
    • Docker and Docker-compose

    2단계. 저장소 복제

    3단계:종속 항목 설치

    디렉토리를 alexis로 변경하고 아래 명령을 실행하십시오.

    npm install

    4단계. 프런트엔드 및 백엔드 설정

    아래 명령은 서버와 클라이언트 앱을 부트스트랩하고 Redis 서버와 RedisInsight GUI를 초기화합니다.

    npm run bootstrap

    5단계. 신청 시작

    npm start

    6단계. 애플리케이션 액세스

    응용 프로그램에 액세스하려면 https://localhost:3000을 엽니다.

    7단계. RedisInsight 액세스

    RedisInsight는 Redis 데이터베이스와 GUI 및 CLI 기반 상호 작용을 모두 수행할 수 있는 시각적 도구이며 Redis 기반 애플리케이션을 개발할 때 훨씬 더 많은 작업을 수행할 수 있습니다. Redis 애플리케이션을 설계, 개발 및 최적화할 수 있는 기능을 제공하는 완전한 기능을 갖춘 순수 데스크탑 GUI 클라이언트입니다. RedisInsight에 대해 자세히 알아보려면 여기를 클릭하십시오.

    RedisInsight GUI는 다음 링크를 통해 액세스할 수 있습니다. https://localhost:8001

    5. 데이터 저장 방식

    1단계: 사용자 데이터는 RedisJSON에 저장됩니다.

    2단계: 아래 코드를 사용하여 각 사용자에 대해 RediSearch 색인이 생성됩니다.

    3단계: 사용자가 PDF를 업로드하면 RedisJSON으로 pdf 배열을 업데이트합니다.

    4단계: 파일 업로드는 ax:stream:pdf-processing에 기록되는 이벤트도 트리거합니다. 개울. 스트림의 페이로드는 다음과 같습니다.

    5단계: 소비자 그룹 내의 소비자는 스트림에서 이벤트를 선택하고 파일을 처리하고 콘텐츠도 해시에 기록합니다.

    6. 데이터에 액세스하는 방법

    이 애플리케이션에는 위의 해시를 인덱싱하는 각 사용자에 대한 RediSearch 인덱스가 있습니다. 이는 관련 콘텐츠를 사용자의 쿼리와 일치시키는 조회 기능을 제공합니다. 콘텐츠는 아래 코드로 분석됩니다.

    RediSearch에 의해 검색된 콘텐츠는 분석을 위해 RedisAI로 전송됩니다.

    7. 작동 방식

    계정 만들기

    Alexis 앱을 열면 로그인할 수 있는 포털로 이동합니다(아래 이미지 참조). 아직 계정이 없다면 하단의 하이퍼링크에서 새 계정을 만들 수 있습니다.

    문서를 업로드하면 화면 왼쪽에 제목이 표시되어 저장 확인을 받게 됩니다(아래 참조).

    Redis를 사용하여 강력한 텍스트 랭커를 만드는 방법 위 이미지에서 볼 수 있듯이 애플리케이션에서 검색할 쿼리를 입력하기만 하면 됩니다. 이 예에서 사용자는 'What is the journey about?'를 입력하여 파일의 내용이 무엇인지 직접 문의했습니다.

    쿼리를 제출하면 관련성에 따라 계층적으로 순위가 매겨진 몇 가지 답변이 즉시 제공됩니다(아래 예 참조).

    이 애플리케이션은 누가 만들었나요?

    바비 돈체프

    Redis를 사용하여 강력한 텍스트 랭커를 만드는 방법

    Bobby는 12년 이상의 고객용 시스템 설계 및 구현 경험이 있는 동적 프로그래밍 엔지니어입니다.

    그가 참여한 모든 프로젝트에 대한 최신 정보를 얻으려면 그의 GitHub 페이지를 살펴보세요.