2025/07 20

React 챗봇(ChatBot) 페이지 코드 정리

코드는 React를 사용하여 간단한 웹 챗봇 인터페이스를 구현한 것입니다. 사용자가 메시지를 입력하고 전송하면, 해당 메시지가 화면에 표시되고 백엔드 API(http://localhost:5500/searchChat)와 통신하여 챗봇의 응답을 받아 다시 화면에 표시하는 기능을 합니다.import React, {useState} from "react" // React 라이브러리와 React 훅인 useState를 가져옵니다.// useState: 컴포넌트 내에서 상태(데이터)를 관리할 수 있게 해주는 훅입니다.import "./ChatPage.css" // ChatPage 컴포넌트의 스타일을 정의하는 CSS 파일을 가져옵니다.const ChatPage =() => { // ChatPage라는 이름의 함수형..

간단한 RAG(Retrieval Augmented Generation) 기반 챗봇 서비스

아래의 Flask 애플리케이션 코드는 Qdrant 벡터 데이터베이스와 OpenAI API를 연동하여 간단한 RAG(Retrieval Augmented Generation) 기반 챗봇 서비스를 구현한 것입니다. 각 부분에 대한 상세 정리와 함께, 더 좋은 코드가 되기 위한 개선 사항 및 추가 코드를 정리합니다.1. 코드 전체 해설이 코드는 크게 세 가지 주요 구성 요소로 나뉩니다: Flask 웹 서버, Qdrant 벡터 데이터베이스 클라이언트, OpenAI API 클라이언트.1.1. 초기 설정 및 클라이언트 초기화from flask import Flask, request, jsonify # Flask 웹 프레임워크 관련 모듈from qdrant_client import QdrantClient # Qdran..

벡터DB, Qdrant를 활용한 벡터 검색 워크플로우 정리

세 가지 Python 코드는 Qdrant 벡터 데이터베이스를 활용한 기본적인 벡터 검색 워크플로우를 보여줍니다. 각 코드가 어떤 역할을 하는지, 그리고 전체적인 흐름은 어떻게 되는지 상세히 정리합니다.전체 워크플로우 개요이 세 가지 코드는 다음과 같은 순서로 실행되어야 하며, 각기 다른 역할을 수행합니다.첫 번째 코드: Qdrant에 벡터를 저장할 **컬렉션(Collection)**을 생성합니다.두 번째 코드: OpenAI 임베딩 모델을 사용하여 텍스트를 벡터로 변환한 후, 이 벡터들을 생성된 컬렉션에 **삽입(Upsert)**합니다.세 번째 코드: 새로운 텍스트를 벡터로 변환한 후, 이 쿼리 벡터와 가장 유사한 벡터들을 컬렉션에서 **검색(Query)**합니다.이 과정은 RAG(Retrieval Aug..

벡터DB, Qdrant 컬렉션 검색 코드 설명

Qdrant 컬렉션 검색을 위한, 파이썬 코드를 바탕으로 각 부분의 의미와 전체적인 동작 흐름을 상세히 설명합니다.1. 코드의 의미이 코드는 Qdrant 벡터 데이터베이스에 연결하여, 미리 정의된 test 컬렉션에서 특정 query_vector와 유사한 상위 2개의 포인트를 검색하고, 그 결과(ID, 벡터, 페이로드, 점수)를 출력하는 기능을 수행합니다.from qdrant_client import QdrantClient # Qdrant 서버와 통신하기 위한 클라이언트 라이브러리를 가져옵니다.from qdrant_client.models import Distance, VectorParams, PointStruct # Qdrant 모델 정의를 가져옵니다.# Distance: 벡터 간 거리 측정 방식 (예:..

Qdrant 컬렉션에 포인트(Vector & Payload) 삽입 코드 설명

Python 코드는 Qdrant 컬렉션에 실제 데이터인 **포인트(Point)**를 삽입(Upsert)하는 예시입니다. 각 부분의 의미와 실행 방법, 그리고 올바른 결과를 상세히 설명합니다.1. 코드의 의미이 코드는 test라는 이름의 Qdrant 컬렉션에 두 개의 포인트(벡터와 페이로드)를 삽입하거나 업데이트합니다. upsert는 "Update"와 "Insert"의 합성어로, 해당 id를 가진 포인트가 이미 존재하면 업데이트하고, 없으면 새로 삽입합니다.from qdrant_client import QdrantClient # Qdrant 서버와 통신하기 위한 클라이언트 라이브러리를 가져옵니다.from qdrant_client.models import Distance, VectorParams, Point..

Qdrant 벡터 데이터베이스에 새로운 컬렉션(Collection)을 생성하는 예시

아래 Python 코드는 Qdrant 벡터 데이터베이스에 새로운 컬렉션(Collection)을 생성하는 예시입니다. 각 부분의 의미와 실행 방법, 그리고 올바른 결과를 상세히 설명합니다.1. 코드의 의미이 코드는 Qdrant 클라이언트를 사용하여 test라는 이름의 새로운 컬렉션을 생성합니다. 이 컬렉션은 2차원(dimension) 벡터를 저장하며, 벡터 간의 유사도를 측정할 때 코사인 유사도(Cosine Distance) 방식을 사용하도록 설정됩니다.from qdrant_client import QdrantClient # Qdrant 서버와 통신하기 위한 클라이언트 라이브러리를 가져옵니다.from qdrant_client.models import Distance, VectorParams # Qdran..

React 기본 사용법

React의 기본적인 동작 방식, React Router를 이용한 페이지 라우팅, 그리고 Redux Toolkit을 활용한 상태 관리 방법에 대해 상세히 설명합니다. 각 파일이 어떤 역할을 하는지 이해하시면 React 프로젝트의 구조와 흐름을 파악하는 데 도움이 될 것입니다.1. index.js 파일 : React 앱의 시작점index.js는 React 애플리케이션의 가장 첫 번째 진입점입니다. 웹 페이지의 HTML과 React 컴포넌트를 연결하고, 전역적으로 필요한 설정(라우터, 상태 관리 등)을 적용하는 역할을 합니다.import React from 'react'; // React 라이브러리를 가져옵니다. JSX 문법을 사용하기 위해 필수적입니다.import ReactDOM from 'react-do..

AWS EC2에 프론트엔드 배포하기

1단계: build 폴더 내용 확인 및 재업로드 (필요시)build 폴더가 로컬에서 완벽하게 빌드된 상태로 EC2에 전송되었는지 확인하는 것이 중요합니다.로컬에서 build 폴더 재빌드:로컬 컴퓨터에서 프론트엔드 프로젝트 디렉토리로 이동하여 다시 빌드합니다.Bash npm run build# 또는yarn build빌드가 성공적으로 완료되었는지 확인합니다.EC2의 기존 build 폴더 삭제:AWS EC2 인스턴스 터미널에서 front 디렉토리로 이동합니다.Bash cd /home/ec2-user/frontsudo rm -rf build # 기존 build 폴더를 완전히 삭제합니다.build 폴더 재업로드:로컬 컴퓨터에서 새로 빌드된 build 폴더를 EC2 인스턴스의 /home/ec2-user/front/..

.env 파일을 AWS 인스턴스에 올리는 방법

AWS 인스턴스에 Python Flask 애플리케이션을 배포하면서 .env 파일을 어떻게 할까. .env 파일은 OPENAI_API_KEY와 같은 민감한 정보를 코드에 직접 노출하지 않고 환경 변수로 관리하기 위해 로컬 개발 환경에서 주로 사용됩니다.AWS 인스턴스에 .env 파일을 올리는 방법과 더 나아가 프로덕션 환경에서 환경 변수를 안전하게 관리하는 모범 사례를 함께 설명합니다.1. .env 파일 직접 업로드 (간단한 방법)가장 간단한 방법은 .env 파일을 AWS 인스턴스에 직접 업로드하는 것입니다. scp (Secure Copy Protocol) 명령어를 사용하거나 SFTP 클라이언트를 이용할 수 있습니다.a) scp 명령어 사용 (터미널/명령 프롬프트)scp는 SSH를 통해 파일을 안전하게 복..

도커(docker)에 Qdrant 벡터 데이터베이스 실행하기(로컬 & 클라우드)

아래 Docker 명령어는 Qdrant 벡터 데이터베이스를 Docker 컨테이너로 실행하는 데 사용됩니다. docker run -p 6333:6333 -p 6334:6334 -v "$(pwd)/qdrant_storage:/qdrant/storage:z" qdrant/qdrant이 명령어는 Qdrant 이미지를 사용하여 새로운 Docker 컨테이너를 생성하고 실행하는 명령입니다. 1. docker rundocker run: Docker 이미지를 기반으로 새로운 컨테이너를 생성하고 실행하는 기본 명령어입니다.2. -p 6333:6333-p: 포트 매핑 (Port Mapping) 옵션입니다. 호스트(당신의 컴퓨터)의 포트와 컨테이너 내부의 포트를 연결해 줍니다.6333:6333:첫 번째 6333: 호스트 컴퓨..