[Project를 위한 공부] 11

[Project 위한 공부] Session 을 구축할때 내가 삽질한 이유 및 해결 방안에 대한 고민 정리

이번 프로젝트에서 맡은 역할과 세션 관리이번 프로젝트에서 내가 맡은 역할은 전반적인 소스 및 백엔드 구축, 데이터베이스(DB) 구축, 그리고 사용자가 프로그램을 사용할 때 필요한 세션 기능 개발이었다.RAG 모델을 구축하는 과정에서 유튜브나 공개된 모델들이 이미 많이 존재하다 보니, 그보다는 다른 부분이 더 매력적으로 느껴졌고, 그 역할을 맡게 되었다. 다만, 이 RAG 모델을 기반으로 세션 관리를 해야 한다는 점을 처음에는 고려하지 못했다. 프로젝트의 기본적인 기술 스택이 Streamlit을 사용한 프런트엔드, Django 기반의 백엔드, 그리고 SQLite 데이터베이스였기 때문이다. 처음 구상할 때 깊이 생각하지 않고 결정했던 부분이 이렇게 문제가 될 줄은 몰랐다…하지만, 이번 프로젝트를 통해 Str..

[Project를 위한 공부] ERD를 베이스로 DB를 구축하기 (Feat. Django)

Project를 기획 및 준비하며.. 이번에 Django 로 백엔드를 구축하는 파트를 맡게 되었는데, 그중 일단 DB를 구축을 해야 할것 같아 일단 기획단계에서 팀원분들과 논의 결과 Chat, User, Search_Log, Rag_data 간단하게 이렇게 4가지의 테이블을 ERD 형식으로 따게 되었다.  일단 이 프로젝트를 기획할때, Chatting log를 따로 보관하여, 이 후 Moderation 이나 RAG 모델의 퀄리티와 규칙들을 넣을려고 따로 Search Log 데이터를 만들기로 했다. 내가 전반적인 Backend 작업을 해야해서 먼저 간단한 message system의  CRUD 를 잡고 이번에 기획한 ERD 를 베이스로 DB를 구축하게 되었다. 우선 ERD 를 베이스로 한 DB 구축 을 설..

[Project 를 위한 공부] API 와 같은 중요한 정보 관리 방법들..

우리가 서비스를 만들때 특히나 OpenAI 의 API나 다른 사이트들이 제공하는 API 를 활용할때가 있다. 이 API 는 암호화 되거나 보안이 적용이 되어야 하는데 과연 어떤식으로 관리를 할까? 에 대한 의문이 들었다. 지금 현제 그냥 프로젝트를 만들때, .env 파일에 적어 놓는 것은 아무리 생각해도 나중에 보안성에서 떨어진다고 생각 되기 때문이다. 실제 그럼 어떻게 관리가 되가고 있을까? 에 대해 생각 했을때 API 키를 해시화(복호화가 불가능하게)시키거나 복호화가 가능하도록 암호화 시킨다는 방법이 있다고 한다.1. 해시화(Hashing)(복호화가 불가능한경우)Hashing, 즉 해시화는 데이터를 단방향으로 암호화하는 기법으로, 입력값을 고정된 길이의 출력값으로 변환이된다.대표적으로 OPENAI나 ..

[Project 를 위한 공부] Middleware 정리

미들웨어(Middleware)란?Django를 하게 되면서 Middleware라는것에 대해 조금 다시 생각하게 되었다. 그래서 Middleware가 어떤건지 정리를 해보아야할듯 해 오늘은 이것에 대해 정리해볼까 한다.미들웨어(Middleware)는 다양한 애플리케이션, 데이터베이스, 운영 체제, 네트워크, 그리고 사용자 간의 상호작용을 가능하게 하는 소프트웨어 레이어이다. 이는 소프트웨어 구성 요소들이 효율적이고 원활하게 상호작용할 수 있도록 중개 역할을 한다고 함.미들웨어의 주요 역할통합 및 연결:서로 다른 시스템이나 애플리케이션을 연결하여 데이터 교환을 원활하게 지원함.예: 데이터베이스와 웹 애플리케이션 간 연결.추상화 제공:하위 시스템의 복잡성을 숨기고, 표준화된 인터페이스를 제공하여 개발자가 보다..

[Project를 위한 공부] RAG 정의 정리

RAG 란?RAG(즉, Retrieval-Augmented Generation)는 정보 검색 시스템과 자연어 생성 모델을 결합한 방식으로, 사용자에게 보다 정확하고 풍부한 정보를 제공하기 위해 사용이 됨주로 두가지 주요 단계를 포함하는데정보 검색 (Retrieval)사용자 질문이나 입력에 따라 외부 데이터베이스 또는 문서에서 관련 정보를 검색.여기서 사용되는 검색 방식은 TF-IDF, BM25, 혹은 Dense Retrieval 모델(Sentence Transformers, DPR 등)일 수 있음.이 단계에서 찾은 정보는 후속 단계에서 답변 생성을 보조하기 위해 사용됩니다.생성 (Generation)검색된 정보를 기반으로 자연어 생성 모델(주로 GPT와 같은 Transformer 기반 언어 모델)을 사용..

[Project 를 위한 공부] Serializer 와 Deserializer

Serializer vs DeserializerSerializer데이터를 객체(Object)에서 전송 가능한 형식(예: JSON, XML, YAML 등)으로 변환하는 과정.예를 들어, Python의 객체를 JSON 문자열로 변환하여 HTTP 응답에 포함하거나 파일로 저장.Deserializer전송된 데이터를 다시 객체(Object)로 변환하는 과정.예를 들어, JSON 문자열을 받아 Python 객체로 변환하여 사용할 수 있도록 처리.Serializer 과 Deserializer은 데이터 전송과 저장을 효율적으로 처리하기 위해 사용됩니다. 특히 다음과 같은 상황에서 활용이 됨데이터 전송RESTful API에서 클라이언트와 서버 간 데이터를 주고받기 위해.클라이언트가 요청(Request) 데이터를 서버가 ..

[Project를 위한 공부] github.io 로 블로그 정검하기

Github.io 란?가볍게 말하자면 github.io 는 Github 에서 제공되는 무료 정적 웹 호스팅 서비스로, 보통 개인 포트폴리오나, 프로젝트 문서화, 블로그등으로 활용되며, Github 저장소에 있는 코드를 기반으로 간단하게 웹사이트를 만들수 있다.주요 특징:무료 호스팅 : javascript등의 정적 파일들로 무료 호스팅이 가능커스텀 도메인 : username.github.io 기본 도베인 대신 자신만의 도메인을 연결 할수 있음.간단한 베포 : 특정 브랜치에 파일을 푸시 하면 자동 베포가능.Jekyll 통합 : Markdown 파일로 동적 콘텐츠 생성가능.HTTPS 지원 : 기본적으로 HTTPS 제공해 보안을 강화할수 잇음.Github.io일단 github.io를 만들려면, public 으로..

[Project를 위한 공부] Meta data 정리

개발을 하게 되면 여러가지의 데이터들과 data flow 등 여러가지 데이터들의 사용 활용등등을 공부하고 알게된다. 그중 가장 기초가 되는 Meta data 에 대한 정리를 하려고 한다.메타데이테란?MetaData 는 데이터를 위한 데이터 라고 할수있다. 말하자면 데이터 자체의 내용이 아니라 데이터를 설명하거나 관히라기 위한 정보를 제공한다. 메타 데이터는 데이터를 더 쉽게 검색, 이해, 관리할수 있도록 돕는 역할을 함.Meta Data 의 종류설명 메타데이터(Descriptive Meatdata)리소스를 식별, 발견 또는 설명하는 데 사용됨.예시:도서관 책 정보 :제목: 나의 라임 오렌지 나무저자: 호세 마우로키워드 : 성장, 우정, 가족요약 : 가난한 소년과 나무의 특별한 우정을 그린 성장 소설.디지..

[Project를 위한 공부] COSMOS 읽어보기 (2)

어제는 TEST 들을 살펴보았고 파일들을 보며 어떤게 잇는지 알아보자COSMOS.Common.TestsCosmos.Common.Tests.csprojToHexStringTest.cspackages.lock.jsonCosmos.Common.Tests.csproj우선 .NET 프로젝트를 구성하는 xml 파일로, .csproj 파일 형식인듯하다이 프로젝트는 Microsoft.NET.Sdk를 기반으로 설정됨. Microsoft에서 제공하는 표준 .NET SDK를 사용하여 빌드 및 관리됩니다.프로젝트의 주요 속성을 정의하는 섹션임.2.1 net6.02.2 Debug;Release;TEST프로젝트에서 사용하는 NuGet 패키지를 참조함.MSTest 테스트 프레임워크를 포함합니다. - 단위 테스트를 작성 및 실행할 ..

[Project를 위한 공부] Open source COSMOSOS 이해하기(2)

오늘은 TEST DIRECTORY 에 있는 코드들을 이해해 정리해보고자 한다. 금일 (1.9.25) 기준 코드입니다! 오픈소스다 보니 나중에 들어갔을때 코드가 변경 되있을수 있음!TEST DIRECTORYCosmos.Common.Tests : 공통 모듈의 테스트를 위한 폴더로 보임Cosmos.Core.Memory.Test : Cosmos 프로젝트의 메모리 관련 테스트를 수행하는 폴더Cosmos.Core.Tests : Core 기능에 대한 테스트를 포함한 폴더Cosmos.System.Tests : 시스템 관련 테스트 기능Cosmos.TestRunner.Core : 테스트 러너의 코어 부분에 대한 폴더Cosmos.TestRunner.Full : 전체 테스트 러너를 포함하는 폴더Cosmos.TestRunner..