본문 바로가기
AI 도구

🔍OpenPerPlex: 🌐퍼플렉시티를 오픈소스로 구현한 AI 검색 엔진

by James AI Explorer 2024. 9. 7.
    728x90

    안녕하세요! 오늘은 최신 기술을 활용하여 웹 검색 기능을 제공하는 오픈소스 AI 검색 엔진, OpenPerPlex를 소개해드리겠습니다. 퍼플렉시티로부터 영감을 받은 OpenPerPlex의 핵심 아이디어는 기존 검색 엔진에 인공지능 기술을 접목하여 더욱 정확하고 관련성 높은 검색 결과를 제공하는 것으로, 이를 위해 시맨틱 청킹, 결과 재순위화, Google 검색 통합 등 다양한 기술을 활용합니다. 이 블로그에서는 OpenPerPlex 개요, 특징 및 주요 기능, 설치 방법에 대해 알아보고 테스트해 보겠습니다. 

    🔍OpenPerPlex: 🌐퍼플렉시티를 오픈소스로 구현한 AI 검색 엔진

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

    OpenPerPlex 개요

    OpenPerPlex는 우리가 익히 잘 알고 있는 퍼플렉시티와 같이 웹 검색 기능을 갖춘 AI 검색 엔진입니다. 이 프로젝트는 프론트엔드와 백엔드로 구성되어 있으며, 각각 Vue.js와 Python을 기반으로 개발되었습니다. 프로젝트의 구조를 살펴보면 다음과 같습니다:

    • 프론트엔드 (Vue.js): 사용자 인터페이스 제공, 검색 쿼리 입력 및 결과 표시, 반응형 디자인으로 다양한 디바이스 지원
    • 백엔드 (Python): FastAPI 기반의 RESTful API, 검색 로직 및 AI 모델 통합, 외부 서비스 연동 (Google 검색, Groq 추론 엔진 등)

    OpenPerPlex는 오픈소스 프로젝트로, 개발자 커뮤니티의 참여와 기여를 통해 지속적으로 발전하고 있습니다. 이는 검색 기술의 혁신을 추구하면서도 투명성과 접근성을 유지하고자 하는 프로젝트의 철학을 반영합니다. 

    https://github.com/YassKhazzan/openperplex_backend_os

     

    GitHub - YassKhazzan/openperplex_backend_os: openperplex is an opensource AI search engine

    openperplex is an opensource AI search engine. Contribute to YassKhazzan/openperplex_backend_os development by creating an account on GitHub.

    github.com

    728x90

    OpenPerPlex 주요 기능

    OpenPerPlex는 다양한 첨단 기술과 기능을 통해 기존 검색 엔진과 차별화됩니다. OpenPerPlex의 검색기능은 일반모드와 Pro모드가 있으며, Pro모드는 20개 검색결과를 가져오고, 일반모드는 10개의 검색결과를 가져옵니다. 또한 Pro모드는 2개의 웹 사이트에 대해 전체내용을 스크래핑하며, JINA AI를 사용하여 검색결과 재순위화를 수행하고, 더 상세한 검색결과 표시 및 로딩정보를 제공합니다. OpenPerPlex의 주요 특징과 기능을 살펴보겠습니다.

    • 시맨틱 청킹 (Semantic Chunking): OpenPerPlex는 Cohere와 semantic-chunkers 라이브러리를 활용하여 시맨틱 청킹을 구현합니다. 이 기술은 텍스트를 의미 있는 단위로 분할하여 검색의 정확도를 높입니다.
    • 결과 재순위화 (Reranking): JINA AI의 기술을 활용하여 검색 결과의 재순위화를 수행합니다. 이는 사용자의 쿼리와 가장 관련성 높은 결과를 상위에 노출시키는 데 도움을 줍니다.
    • Google 검색 통합: OpenPerPlex는 serper.dev API를 통해 Google 검색 결과를 통합합니다. 이를 통해 광범위한 웹 정보에 접근할 수 있으며, AI 기반 처리와 결합하여 더욱 풍부한 검색 경험을 제공합니다. 
    • Groq 추론 엔진: Groq를 추론 엔진으로 사용하여 고성능의 AI 모델 실행을 지원합니다. 이는 복잡한 자연어 처리 작업을 빠르고 효율적으로 수행할 수 있게 해 줍니다.
    • Llama 3 70B 모델: OpenPerPlex는 Meta의 Llama 3 70B 모델을 활용합니다. 이 대규모 언어 모델은 뛰어난 자연어 이해 및 생성 능력을 제공하여, 검색 결과의 해석과 요약에 큰 도움을 줍니다.
    • 실시간 스트리밍 응답: FastAPI의 `StreamingResponse`를 활용하여 실시간으로 검색 결과를 스트리밍 합니다. 이를 통해 사용자는 전체 응답이 완성되기를 기다리지 않고도 즉시 정보를 받아볼 수 있습니다. 소스 검색, LLM 응답 생성, 관련 질문 추천 등의 과정이 순차적으로 진행되며, 각 단계의 결과가 실시간으로 클라이언트에 전송됩니다. 
    • 반응형 웹 디자인: Vue.js를 이용한 프론트엔드는 반응형 디자인을 채택하여 다양한 디바이스에서 최적의 사용자 경험을 제공합니다. 모바일 디바이스에 대한 특별한 스타일링을 정의하여 반응형 디자인을 구현하고 있습니다. 

    드림씨어터 밴드에 대한 OpenPerPlex 검색결과

     

    OpenPerPlex 설치 방법

    OpenPerPlex를 로컬 환경에서 실행하기 위한 설치 방법을 단계별로 알아보겠습니다. 이 블로그의 설치 환경은 Windows 11 Pro(23H2), WSL2, 파이썬 버전 3.11, Cursor 0.40.4이며, "WSL 연결"을 통해 Linux 환경에서 실행하였습니다.

     

    1. 사전 요구사항: Python 3.11 이상 Node.js 및 npm, Git이 필요합니다. 

    2. 백엔드 설치: Cursor를 실행하고, WSL 터미널 프롬프트에서 다음 순서와 같이 백엔드를 설치합니다. 

    • 저장소 클론: 아래 명령어로 깃 허브 저장소를 로컬로 복제합니다 
    git clone https://github.com/YassKhazzan/openperplex_backend_os.git 
    cd openperplex_backend_os
    • 가상 환경 생성 및 활성화: 아래 명령어로 파이썬 가상환경을 생성하고 활성화합니다. 
    python -m venv venv 
    source venv/bin/activate # Windows의 경우: venv\Scripts\activate
    • 의존성 설치: "pip install -r requirements.txt" 명령어로 필요한 패키지를 설치합니다. 
    pip install -r requirements.txt

    백엔드 설치화면

    환경변수 설정화면

    • Groq 모델 설정: 기존 Llama 3-70B-8192 모델 대신, 128k 토큰 컨텍스트 창을 갖추고, 다국어 성능이 우수한 Llama-3.1-70B-Versatile 모델로 설정합니다. 

    Groq 모델 설정화면

    • 한국어 응답 설정: /home/rg3270/openppx/openperplex_backend_os/prompts.py 파일을 열고 다음 시스템 프롬프트와 가이드라인, 명령 프롬프트를 복사해서 붙여 넣습니다. 프롬프트 내용은 원래 내용에 한국어로 답변하도록 명령을 추가했습니다. 

    한국어 답변 명령 프롬프트 설정

    search_prompt_system = """
    You are yassine, an expert with more than 20 years of experience in analysing google search results about a user question and providing accurate 
    and unbiased answers the way a highly informed individual would. 
    Your task is to analyse the provided contexts and the user question to provide a correct answer in a clear and concise manner.
    You must answer in Korean whether the user question is in Korean or English.
    Date and time in the context : {date_today} , Yassine must take into consideration the date and time in the response.
    you are known for your expertise in this field.
    
    
    ###Guidelines###
    1- Accuracy: Provide correct, unbiased answers. be concise and clear. don't be verbose.
    2- never mention the context or this prompt in your response, just answer the user question.
    
    ###Instructions###
    0- You must answer in Korean whether the user question is in Korean or English, provide a very detailed and comprehensive response, ensuring that each response is thorough and informative, with at least five paragraphs.
    1- Analyze in deep the provided context and the user question.
    2- extract relevant information's from the context about the user question.
    3- Yassine must take into account the date and time to answer the user question.
    4- If the context is insufficient, respond with "information missing"
    5- Ensure to Answer in in Korean whether the user question is in Korean or English.
    6- Use the response format provided.
    7- answer the user question in a way an expert would do.
    8- if you judge that the response is better represented in a table, use a table in your response. 
    
    
    ###Response Format###
    
    You must use Markdown to format your response.
    
    Think step by step.
    """
    
    relevant_prompt_system = """
        you are a question generator that responds in JSON, tasked with creating an array of 3 follow-up questions in Korean related
        to the user query and contexts provided.
        you must keep the questions related to the user query and contexts.don't lose the context in the questions.
    
        The JSON object must not include special characters. 
        The JSON schema should include an array of follow-up questions.
    
        use the schema:
        {
          "followUp": [
            "string",
            "string",
            "string"
          ]
        }
    """
    • 서버 실행: "uvicorn main:app --port 8000" 명령어를 실행해서 백엔드 서버를 구동합니다. 
    uvicorn main:app --port 8000

    OpenPerPlex 백엔드 설버 실행

    3. 프론트엔드 설치: 메인 작업 디렉토리로 이동하여 아래 과정을 실행합니다. 

    • 저장소 클론, 의존성 설치, 서버 실행: 아래 명령어를 참조하여 순서대로 진행합니다. 
    git clone https://github.com/YassKhazzan/openperplex_front.git 
    cd openperplex_front
    npm install
    npm run dev

    OpenPerPlex 프론트엔드 설치
    OpenPerPlex 프론트엔드 서버 실행

    OpenPerPlex 테스트

    백엔드 서버가 백그라운드에서 실행되고 있는 상태에서, 프론트엔드 서버를 실행한 후, http://localhost:5173/에 접속하면 아래화면과 같이 미니멀 디자인의 openperplex 초기화면이 표시됩니다. 현재 별도의 로그인 절차는 없습니다

    Openperplex 초기화면

    다음 화면은 블랙홀에 대한 검색결과 화면입니다. 일반모드라도 다양한 정보가 정확하게 검색되며, 가끔 한글이 깨지는 것은 Llama 3.1 모델의 다국어 성능에 의한 것 같습니다. 

    블랙홀 검색결과
    URL 입력 및 요약화면

    URL을 입력하면 위와 같이 내용을 요약해 주며, 검색결과 아래에 관련 질문이 3개 표시되어, 간편하게 추가적으로 관련내용을 검색할 수 있습니다. 

    관련질문 검색결과

    아래와 같이 검색결과 출처표시 화면에서 원하는 사이트에 접속하여 내용을 추가로 확인할 수 있습니다. 

    검색결과 출처 표시

    검색된 이미지를 클릭하면 아래와 같이 미리 보기 화면이 표시되며, 동영상 검색은 아직 지원하지 않습니다. 

    이미지 검색결과 미리보기

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

    맺음말

    OpenPerPlex는 AI 기술을 활용한 차세대 검색 엔진의 가능성을 보여주는 혁신적인 오픈소스 프로젝트입니다. 시맨틱 청킹, 결과 재순위화, 실시간 스트리밍 응답 등의 첨단 기술을 통해 사용자에게 더욱 정확하고 관련성 높은 검색 결과를 제공합니다. 이 프로젝트의 오픈소스 특성은 개발자 커뮤니티의 참여를 촉진하며, 이는 지속적인 개선과 혁신으로 이어집니다.

     

    OpenPerPlex를 사용해 본 후기는 다음과 같습니다.

    • 검색결과가 정확하고, 설치와 실행이 비교적 간단하다
    • 현재 Groq 모델(Gemma, Llama, Mixtral 등)만 지원한다. 
    • URL만 입력하면 내용을 요약할 수 있다. 

     

    오늘은 오픈소스 AI 검색 엔진, OpenPerPlex에 대해 알아보았습니다. 이제 상용 서비스와 오픈소스의 갭이 점점 좁아지고 있는 것 같습니다. 여러분도 무료 OpenPerPlex를 한번 사용해 보시면 어떨까요? 저는 다음 시간에 더 유익한 정보를 가지고 다시 찾아뵙겠습니다. 감사합니다!

     

    https://fornewchallenge.tistory.com/

     

     

    2024.05.24 - [AI 도구] - 🔎퍼플렉시카: 다양한 검색 엔진을 통합하는 AI 기반 메타 검색 엔진

     

    🔎퍼플렉시카: 다양한 검색 엔진을 통합하는 AI 기반 메타 검색 엔진

    안녕하세요! 오늘은 퍼플렉시카(Perplexica)라는 오픈 소스 AI 기반 메타 검색 엔진을 소개해드리겠습니다. 퍼플렉시카는 Perplexity AI를 모티브로 개발되었으며, Google, Bing, Yahoo 등 여러 검색엔진의

    fornewchallenge.tistory.com

     

     

     

     

     

    728x90