목록분류 전체보기 (297)
가수면
https://developers.google.com/search/docs/fundamentals/seo-starter-guide?hl=ko SEO 기본 가이드: 기본사항 | Google 검색 센터 | 문서 | Google for Developers검색엔진 최적화의 기본사항에 관한 지식만으로도 눈에 띄는 효과를 얻을 수 있습니다. Google SEO 기본 가이드에서 기본적인 검색엔진 최적화에 관해 간략히 알아보세요.developers.google.com여기만한 데 없었다..
퓨전 RAG (Fusion RAG)여러 출처나 관점의 정보를 합성해 응답을 만드는 고급 모델이다. 서로 다른 데이터셋이나 보완적이거나 대조적인 정보를 포함한 여러 출처 문서를 사용할 때 특히 유용하다. 이 모델은 여러 소스에서 데이터를 검색한 다음 생성 모델을 사용해 다양한 입력을 균형 잡힌 출력으로 통합한다.다양한 관점과 데이터셋을 활용하는 비즈니스 전략이나 정책 수립과 같은 복잡한 의사 결정 프로세스에 유용하다. 단일 데이터에 의존할 경우 발생할 수 있는 편견 문제를 해결한다. 반면, 정보 과부하나 상충하는 데이터로 인한 위험도 따른다. 따라서 출력의 일관성이나 정확성을 손상하지 않으면서 다양한 입력을 균형 있게 조정해야 한다는 과제가 있다.https://arxiv.org/abs/2402.03367 ..
추측 RAG(Speculative RAG)추측 RAG는 검색된 데이터가 부족하거나 모호할 때 모델이 추측을 통해 응답하도록 유도하는 방식이다. 완전한 정보를 사용할 수 없지만 시스템이 여전히 유용한 응답을 제공해야 하는 시나리오를 처리하도록 설계됐다. 추측을 통해 모델은 검색된 데이터의 패턴과 이미 학습한 광범위한 지식을 바탕으로 그럴듯한 결론을 생성할 수 있다.이 방식은 완전히 정확한 결과를 내놓지는 않는다. 하지만, 확실성이 필요하지 않은 의사 결정 프로세스에서 여전히 가치를 제공할 수 있다. 예를 들어, 재무나 마케팅 등에서 초기 아이디어를 발굴하는 과정에 도움을 줄 수 있다.물론, 사실적 결론보다는 가설을 생성하도록 설계됐기 때문에, 사용자는 이에 주의할 필요가 있다. https://arxiv.o..
수정 RAG(Corrective RAG)수정 RAG 모델은 표준 RAG를 기반으로 구축되지만, 생성된 응답의 잠재적 오류나 불일치를 수정하도록 설계된 계층을 추가한다. 검색 및 생성 단계 후 수정 메커니즘을 사용해 생성된 출력의 정확성을 확인하는 식이다. 검색된 문서의 추가 참조나 모델의 미세 조정, 모델이 출력을 자체 평가하는 피드백 루프 구현을 통하는 식이다. 수정 RAG는 의료나 법률, 과학과 같이 고도의 정확성이 필요한 분야에서 유용하다. 생성 단계를 개선하고 가장 신뢰할 수 있는 출처와 출력을 일치해 모델 응답에 대한 신뢰를 강화한다. https://arxiv.org/abs/2401.15884 Corrective Retrieval Augmented GenerationLarge language m..
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의 경우 한번에 보낼 수 있는 토큰 제한이 있어 큰 텍스트를 청크로 나누는..
LLM 애플리케이션 기본 구현 방식from langchain.prompts.prompt import PromptTemplatefrom langchain_openai import ChatOpenAIfrom langchain_core.output_parsers import StrOutputParserfrom third_parties.linkedin import scrape_linkedin_profilesummary_template = """링크드인의 유저 정보를 줄테니 아래 요구사항에 맞춰 답변을 생성해주세요.1. 짧은 요약2. 흥미로운 사실 2가지{information}"""summary_prompt_template = PromptTemplate( input_variables=["information..
버전 관련 오류내 os에 설치된 yarn의 버전과 기존 프로젝트에서 사용되고 있는 yarn의 버전이 불일치했을 때 버전을 동기화시키는 과정에서 발생할 수 있는 오류와 방법들을 정리한다. 다운그레이드 해야하는 경우내 os에 설치된 버전이 프로젝트보다 버전이 높아 다운그레이드해야 하는 경우.이 경우 yarn을 삭제 후 재설치 하는 방법이 있겠으나, 그냥 기존에 설치했던 방법에서 버전만 수정하는 방법을 권장한다.그 이유는 yarn을 설치하는 방법이 homebrew, npm, 기본 corepack 등 다양하므로 기존에 설치해서 진행하던 프로젝트들과 yarn 명령어 사용하는 부분에서 충돌을 일으킬 수 있다. 오류 예시) error This project's package.json defines "packageMa..
- JPA -기타 DB 조작 SQL 쿼리https://jhchoi1182.tistory.com/272 MySQL스프링 부트에서 MySQL 도커로 실행했을 때의 환경으로 정리 의존성 설치 // Spring Boot 3.1 이상 com.mysql mysql-connector-j // Spring Boot 3.0 이하 mysql mysql-connector-java 설정 // application.properties spring.datasource.urjhchoi1182.tistory.com@EntityGraph다대일이나 일대다가 설정된 속성을 지정해주면 조인 연산을 수행한다.선언적으로 사용하기 쉬우며, 연관 엔티티들을 한 번의 쿼리로 가져올 수 있다.public interface PostRepository ..
상태 관리Svelte는 let 변수가 변경될 때마다 이를 사용하는 모든 부분이 그냥 자동으로 업데이트된다.예시 코드1) Clicked {count} times예시 코드2)name 변수가 변경될 때마다 greeting 변수도 자동으로 업데이트 됨{greeting}전역 상태 관리writable을 그냥 export해서 사용하면 됨 import { writable } from 'svelte/store';export const count = writable(0);사용법.set(): 스토어의 값을 설정합니다..update(): 현재 값을 기반으로 새로운 값을 설정하는 함수를 받습니다..subscribe(() => {}): 스토어의 값이 변경될 때마다 호출될 콜백 함수를 등록합니다.get(상태값): 스토어의 ..
computed vs watchcomputed종속된 데이터가 변경될 때 자동으로 다시 계산되는 속성을 정의할 때 사용watch와 다르게 데이터 값의 변경이 일어나지 않더라도 최초에 정의된 함수가 실행됨. Full Name: {{ fullName }} watch 정의된 데이터 값 하나만을 감시computed와 다르게 실제 변경이 일어나기 전까지 실행되지 않음.(값이 할당되지 않음) props로 객체 전달props: { // 기본 타입 체크 ('null'과 'undefined'는 모든 타입 유효성 검사를 통과합니다.) propA: Number, // Number 타입 체크 propB: [String, Number], // 여러 타입 허용 propC: { // 문자열이고 부모..
Vuex타입스크립트 적용1. vuex 타입 에러 문제공식 문서에 따르면 특별한 TypeScript 구성이 필요하지 않다고 하는데 모듈 선언에 대한 오류가 발생할 수 있다.import { createStore } from "vuex";모듈 'vuex'에 대한 선언 파일을 찾을 수 없습니다. 'c:/Users/yhhnn/Desktop/dev/frontend/Private/Vue/weather/node_modules/vuex/dist/vuex.mjs'에는 암시적으로 'any' 형식이 포함됩니다.There are types at 'c:/Users/yhhnn/Desktop/dev/frontend/Private/Vue/weather/node_modules/vuex/types/index.d.ts', but this ..
라우팅내부 페이지 라우팅href 속성에 #id(섹션 id) 설정// Navbar Home Portfolio About // Title 섹션 .. // Portfolio 섹션 .. // About 섹션 페이지 라우팅npm i vue-router// router.tsimport { createWebHistory, createRouter } from "vue-router";import TitlePage from "../components/Title.vue";im..
바뀐 부분 상태값 = data() {} → ref(초기 상태값) // 상태값 가져오려면 .value로 가져와야함함수 = methods → 그냥 선언마운트 시 = mounted() {} → onMounted(() => {}); 컴포넌트 import그냥 스크립트에 importPropsconst props = defineProps({});로 props 정의// Child Component {{ color }} const emits = defineEmits(["onSearchCity"]);@click="emits('onSearchCity', inputText)"상위 컴포넌트로 onSearchCity라는 이벤트 전달, inputText는 전달된 값 ..
기본 방식리렌더링 조건큰 조건은 리액트와 동일하다.1. 상태값 변경2. 부모 컴포넌트 리렌더링3. props 변경4. 강제 리렌더링 그러나 1번의 경우 리액트와 다른 점이 있다.리액트의 경우 상태값이 변경되는 컴포넌트가 리렌더링이 발생하여 리렌더링을 방지하기 위해 memo, useMemo, useCallback 등을 이용해야하지만, Vue의 반응형 시스템은 상태 변경을 추적하여 필요한 부분만 리렌더링하므로 React처럼 명시적으로 리렌더링을 방지하는 메커니즘이 크게 필요하지 않다.기본 형식data에 상태 및 변수 정리 영화정보 {{ title }} // :속성명="데이터" 개봉: {{ year }} 장르: {{ category }} 반복문 및 조건문 형식으로 컴포넌트 반복문 사..