목록전체 글 (307)
가수면
https://news.hada.io/topic?id=27640 Claude Code를 만들며 배운 것: 우리가 Skills를 사용하는 방법 | GeekNews클로드 코드에서 Skills는 가장 많이 사용되는 확장 포인트 중 하나로, Anthropic 내부에서 수백 개의 스킬을 실제로 운용하며 축적한 실전 노하우를 공개스킬은 단순 마크다운 파일이 아니라 스크news.hada.io.md뿐만 아니라 스크립트, 에셋, 데이터, 로그 등 폴더 내 자원을 모두 조작할 수 있음 재활용되는 것이므로 너무 구체적이고 지엽적인 지시사항의 스킬은 지양
로그의 목적과 구조 - 가독성 확보와 검색 효율성서버 로그를 남길 때 가장 먼저 정리해야 할 것은 형식보다 목적이다.로그는 두 가지를 동시에 만족해야 한다. 하나는 사람이 빠르게 읽을 수 있어야 한다는 점이고, 다른 하나는 시스템이 검색하고 집계할 수 있어야 한다는 점이다. 요즘 로그 설계가 본문은 읽기 쉽게, 나머지는 구조적으로 가는 이유도 여기에 있다. OpenTelemetry 문서도 운영 환경에서는 구조화된 로그가 파싱, 검증, 검색, trace 연계에 유리하다고 설명한다. 그래서 로그 한 줄은 보통 이렇게 생각하면 이해가 쉽다.body에는 사람이 읽는 메시지를 넣는다. 예를 들어 "Completed 200 OK" 같은 문장이다. 대신 그 로그가 어느 서비스에서 나왔는지, 운영 환경이 무엇인지, 로..
https://arxiv.org/abs/2512.24601 Recursive Language ModelsWe study allowing large language models (LLMs) to process arbitrarily long prompts through the lens of inference-time scaling. We propose Recursive Language Models (RLMs), a general inference paradigm that treats long prompts as part of an external environarxiv.org1. 문제 제기: "긴 문맥(Long Context)"의 한계현재 최첨단 LLM들은 100만 토큰 이상의 문맥 창(Context Win..
트리쉐이킹(Tree Shaking)이란?트리 쉐이킹이란 자바스크립트 번들러가 최종 번들 파일의 크기를 줄이기 위해, 빌드 과정에서 사용하지 않는 코드를 제거하는 최적화 작업을 의미한다. 과거 CommonJS의 require 방식은 코드가 실행되는 런타임에 모듈을 동적으로 불러왔기 때문에 번들러가 빌드 시점에 어떤 코드가 필요한지 정확히 분석하기 어려워 트리쉐이킹이 적용되기 까다로웠다. 그러나 ES6 모듈(ESM)이 도입되면서 코드를 실행하지 않고도 빌드 시점에 import와 export 관계를 파악할 수 있게 되어 트리쉐이킹이 가능해졌다. 때문에 일반적으로 런타임 성능 향상에 이점을 가지며, 빌드 타임은 오히려 더 느려질 수 있다. 그러면 번들링을 위한 웹팩 등의 설정은 따로 설정해줘야할까?결론부터 말하..
최근 LLM이 기술계의 화두로 떠오르면서, RAG 기술의 중요성이 날로 커지고 있다.RAG의 핵심은 사용자의 질문과 가장 관련 있는 문서를 방대한 데이터 속에서 빠르고 정확하게 찾아내는 것인데, 이 과정의 핵심 역할을 하는 것이 바로 임베딩(Embedding)이다. 많은 개발자가 sentence-transformers와 같은 라이브러리를 사용해 텍스트를 벡터로 변환하며, 이 라이브러리들은 대부분 내부적으로 PyTorch를 기반으로 동작한다. GPU가 아닌 CPU 환경에서 임베딩을 수행하더라도, PyTorch는 멀티 스레딩을 통해 연산을 병렬로 처리하여 놀라운 속도를 보여준다. 여기서 한 가지 근본적인 의문이 생긴다. 파이썬은 GIL(Global Interpreter Lock) 때문에 CPU 바운드 작업에..
https://arxiv.org/pdf/2509.17396 대화를 에피소드 단위로 묶고,주제를 key value로 관리
형제는 이벤트 전파 대상이 아님.이벤트는 기본적으로 상위로 전파됨(버블링)하위로의 전파는 없음(캡처링은 타깃까지만 내려오기 때문) 캡처링:부모 -> 자식 X어디에서 이벤트가 발생했든 '최상위 -> 타겟' O stopImmediatePropagation:상위 전파, 동 레벨 이벤트 실행 막음자기 이후에 등록된 리스너들만 막음예시)const btn = document.getElementById("myBtn");btn.addEventListener("click", () => console.log("리스너 1"));btn.addEventListener("click", e => { console.log("리스너 2 - 전파 중단"); e.stopImmediatePropagation();});btn.addEve..
https://developers.google.com/search/docs/fundamentals/seo-starter-guide?hl=ko SEO 기본 가이드: 기본사항 | Google 검색 센터 | 문서 | Google for Developers검색엔진 최적화의 기본사항에 관한 지식만으로도 눈에 띄는 효과를 얻을 수 있습니다. Google SEO 기본 가이드에서 기본적인 검색엔진 최적화에 관해 간략히 알아보세요.developers.google.com여기만한 데 없었다..
모델이 독립적으로 행동할 수 있도록 해 RAG 프레임워크에 자율성을 도입하는 방식이다. 사전 정의된 검색 메커니즘으로 제한되는 기존 RAG 모델과 달리, 시스템이 추가 소스를 식별하고 다양한 유형의 정보를 우선순위로 지정하거나 심지어 사용자 입력에 따라 새로운 쿼리를 시작할 수 있도록 한다.이런 방식은 정보가 진화하거나 검색 프로세스가 새로운 맥락에 적응해야 하는 동적 환경에서 특히 유용하다. 자율적 연구 시스템이나 고객 서비스용 챗봇, 진화하거나 예측할 수 없는 쿼리를 처리해야 하는 지능형 어시스턴트 등이 예다.단, 자율적 프로세스가 사용자가 의도한 목표와 일치하는지 확인하는 것이 중요하다. 지나치게 자율적인 시스템은 의도에서 벗어나거나 쿼리와 관련 없는 정보를 제공할 수 있다.https://arxiv..
여러 출처나 관점의 정보를 합성해 응답을 만드는 고급 모델이다. 서로 다른 데이터셋이나 보완적이거나 대조적인 정보를 포함한 여러 출처 문서를 사용할 때 특히 유용하다. 이 모델은 여러 소스에서 데이터를 검색한 다음 생성 모델을 사용해 다양한 입력을 균형 잡힌 출력으로 통합한다.다양한 관점과 데이터셋을 활용하는 비즈니스 전략이나 정책 수립과 같은 복잡한 의사 결정 프로세스에 유용하다. 단일 데이터에 의존할 경우 발생할 수 있는 편견 문제를 해결한다. 반면, 정보 과부하나 상충하는 데이터로 인한 위험도 따른다. 따라서 출력의 일관성이나 정확성을 손상하지 않으면서 다양한 입력을 균형 있게 조정해야 한다는 과제가 있다.https://arxiv.org/abs/2402.03367 RAG-Fusion: a New T..
수정 RAG 모델은 표준 RAG를 기반으로 구축되지만, 생성된 응답의 잠재적 오류나 불일치를 수정하도록 설계된 계층을 추가한다. 검색 및 생성 단계 후 수정 메커니즘을 사용해 생성된 출력의 정확성을 확인하는 식이다. 검색된 문서의 추가 참조나 모델의 미세 조정, 모델이 출력을 자체 평가하는 피드백 루프 구현을 통하는 식이다. 수정 RAG는 의료나 법률, 과학과 같이 고도의 정확성이 필요한 분야에서 유용하다. 생성 단계를 개선하고 가장 신뢰할 수 있는 출처와 출력을 일치해 모델 응답에 대한 신뢰를 강화한다. https://arxiv.org/abs/2401.15884 Corrective Retrieval Augmented GenerationLarge language models (LLMs) inevitabl..
https://neo4j.com/docs/operations-manual/current/docker/introduction/ Getting started with Neo4j in Docker - Operations ManualAn introduction to how Neo4j runs in a Docker container.neo4j.comNeo4j 도커로 실행실행 명령어docker run \ --restart always \ --name test-neo4j \ -d \ --publish=7474:7474 --publish=7687:7687 \ --env NEO4J_AUTH=neo4j/8자리 \ --volume=/Users/choejihyeon/Desktop/neo4j:/..
자체 평가를 통해 생성된 출력의 품질을 평가하는 시스템이다. 검색된 문서와 출력의 일관성을 확인하는 내부 피드백 루프를 구축하거나 사용자 평가나 수정과 같은 외부 피드백 메커니즘을 통해 활용할 수 있다.셀프 RAG는 지속적인 개선과 정확성이 필수적인 교육이나 훈련 애플리케이션에서 유용하다. 자동 학습 시스템에 활용하면, 모델이 응답이 부족할 수 있는 영역을 식별하고 그에 따라 검색과 생성 전략을 조정할 수 있다.핵심은 모델의 자체 평가 능력이 검색된 문서의 정확성과 포괄성에 달려 있다는 것이다. 불완전한 검색 프로세스나 잘못된 데이터로 인해 자체 평가 메커니즘이 부정확해질 가능성이 있다. https://arxiv.org/abs/2310.11511 Self-RAG: Learning to Retrieve, ..
vuetify를 이용해 작업하다보면 v-select와 v-autocomplete 등을 사용할 때 input이나 placeholder, 드롭다운 등의 스타일을 커스텀하고 싶은 때가 온다.이 경우 스타일을 수정하는 데에는 크게 2가지 방법이 있다.1. 선택자를 사용해 스타일을 수정하는 법먼저 두 가지 방법이 있다.전역적으로 적용하는 방법, 컴포넌트 내에서 scoped를 사용해 컴포넌트 단위로 적용하는 방법 1. 전역적으로 적용하는 방법별 거 없이 import된 scss나 css 파일에 클래스를 설정해주면 된다.클래스는 개발자 도구로 열어서 타게팅할 요소의 클래스를 직접 확인해서 지정해주면 된다..v-list-item-title { font-size: 14px;}or.custom-selector .v-l..
프론트에서 파일을 다운받기 위해 백엔드로 요청 보낼 때 백엔드에서 구성해야할 로직을 정리한다.백엔드 (JAVA) public void downloadFile(HttpServletResponse response, String fileOriginNm, String policyFileNm, String policyFlpth) { String uploadPath = policyFileService.getPolicyUploadFile(policyFlpth, policyFileNm); // uplo..
MySQL과 Docker 기반으로 배포된 데이터베이스 데이터 이전 방법 정리기존 데이터베이스 덤프 생성docker exec 기존_컨테이너_이름 mysqldump -u 유저이름 -p비밀번호 --all-databases > 저장할_경로/backup.sql 우분투에서 로컬 컴퓨터로 덤프 파일 복사복사하고자하는 경로에서 아래 명령어 실행scp promartians@192.168.40.202:저장된_경로/backup.sql ./backup.sql 새로운 데이터베이스 도커 컨테이너에 복사docker cp /path/to/backup.sql test-db:/backup.sql 데이터 이전// 컨테이너 접속docker exec -it test-db /bin/bash// 데이터 이전 (단일 테이블)mysql -u roo..
LLM 기본 원리몇 개의 단어가 차례로 모인 것을 문장이라고 한다.이 특성대로 다음에 올 단어들 중 가장 확률이 높은 단어를 선택하는 방식을 통해 차례대로 단어를 배치함 (다음 단어가 무엇인지 추측)자동 완성 기능과 유사한 방식이다. (lang을 검색하면 chain이 자동 완성 목록에 뜨는 식)프롬프트의 구성 요소1. 명령어어떤 작업을 수행해야하는지ex) 번역2. contextAI 모델이 작업을 더 잘 이해하고 더 정확한 응답을 생성하는 데 도움이 되는 추가 정보context 제공를 통해 ai 결과값(성능)을 크게 향상시킬 수 있음ex) 대화 상황, 맥락 등3. 입력 데이터AI 모델이 처리해야할 정보ex) 번역해야할 문장4. 출력 표시기기대하는 응답 형태명령어에 포함되어 있는 경우도 있음ex) 출력 포맷..
다수의 문서 등 대량의 데이터를 프롬프트로 전달해야할 경우 토큰 처리map reduce chain랭체인 예시)chain = load_summarize_chain(llm, chain_type="map_reduce")1. 여러 문서에 대해 각각의 문서를 요약하는 요청을 병렬 처리2. 각각의 요약 결과들을 하나로 모아서 재요약 요청단점:1. 요청이 많아지니 비용문제 발생2. 정보 손실 refine chain문서를 하나 하나 중첩 요약해가며 정보의 정확성을 높이는 방법랭체인 예시) chain = load_summarize_chain(llm, chian_type="refine")1. '빈 값 + 첫 문서' 요약2. '1번 요약 + 두 번째 문서' 요약3. '2번 요약 + 세 번째 문서' 요약...대화 세션 유지를..
구현 방법구현 방식의 기본 개념 및 필요 요소들은 다음과 같다. 1. tool로 사용할 함수를 정의한다. 이때, 함수명과 설명을 잘 적는 것이 중요하다.예시)def get_text_length(text: str) -> int: """Returns the length of a text by characters"""2. 에이전트 프로세스를 실행시킬 프롬프트를 작성한다. 2-1. 이때 프롬프트에는 tool의 이름/설명과 tool 목록을 전달하여 LLM이 선택할 수 있도록 한다. 2-1. 최종 프롬프트의 주요 구성 사항은 다음과 같다. tools 제시 및 설명포맷 지정 명령Question: 사용자의 질문Thought: 에이전트가 무엇을 할지Action: 특정 작업을 수행 지시 (알맞은 tool 고르기)A..
langchain 로더 - https://github.com/langchain-ai/langchain/tree/master/libs/langchain/langchain/document_loaders langchain/libs/langchain/langchain/document_loaders at master · langchain-ai/langchain🦜🔗 Build context-aware reasoning applications. Contribute to langchain-ai/langchain development by creating an account on GitHub.github.comText Splitter - llm의 경우 한번에 보낼 수 있는 토큰 제한이 있어 큰 텍스트를 청크로 나누는..