앞서서 Postman을 다운로드 받아서 설치까지 진행을 해봤다.

아직 하지 않은 분들이 있다면 아래 포스트를 참고해서 설치를 하기 바란다.

API 테스트를 위한 Postman (포스트맨) - 설치

 

잘 동작하는지 알아보기 위해서는 API Service가 하나 있어야 한다.

얼마전 살펴본 기상청의 날씨 정보 API를 이용해보도록 하겠다.

날씨 정보 API 활용하기 (Python)

 

 

Postman을 실행하면 다음과 같은 화면이 나온다.

 

파이썬 코드를 reference로 삼아서

우리가 사용하고자 하는 API 정보를 살펴보자.

https://www.whatwant.com/entry/weather-api

 

우리가 사용하고자 하는 API 모습은 다음과 같다.

http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getUltraSrtNcst

 

HTTP 방식이라는 것을 일단 확실하게 하고 그 주소를 적어주면 된다.

 

parameters들은 그 아래에 하나씩 입력해주면 된다.

 

여기에서 조금 고생한 부분은 인증키 부분이다.

Python으로 작업을 할 때에는 Decoding된 인증키를 사용해야 했었는데,

Postman을 사용할 때에는 Encoding된 인증키를 넣어줘야 했다.

 

이제 "Send"를 누르면 결과를 확인할 수 있다.

 

 

사실 별 어려울 것 없이 간단한 사용인데,

과연 이게 Postman의 전부일까?!

 

당연히 아니다.

 

하지만, 본격적인 Postman 활용을 위해서는 Account를 등록해서 사용을 해야 한다.

회사에서 사용하기에는 뭔가 좀 찜찜한 조건이다.

 

나중에 필요하다고 하면

Account 등록해서 본격적인 사용하는 것도 한 번 살펴보도록 하겠다.

반응형

다른 API 테스트 툴을 써보려고 하다가

굳이 시장 지배적인 위치에 있는 Postman을 두고 다른 도구를 써야하나?라는 생각이 들어서... ^^

 

https://www.postman.com/

Postman

 

어?! 사이트 주소가 ".com" 이네!?

이거 회사에서 free 사용해도 되는 것일까?

Pricing

 

역시나! 가격 정책이 존재한다.

이거 참... 애매하다.

 

회사에서 상업적 목적으로 사용해도 되는걸까?

구글링을 해보니 이런 답변이 있긴 하다.

 

https://gytni.com/new_gytni/qna.php?document_srl=25138&mode=contact&mode2=view&mode3=chk

Q&A

 

언제든 변할 수 있는 것이 라이선스이고, 가격정책인지라

현재 시점에서도 허용되는 내역인지는 추가 확인이 필요할 것 같다.

 

법적 해석까지는 모르겠지만,

현재 Terms 내용을 살펴봐도 그렇고, 구글링 결과들을 살펴봐도

회사에서 상업적 목적으로 사용하는 것은 가능한 것으로 보인다.

 

그런데, 여기에서 하나 더 살펴볼 것이 있다.

위의 가격정책은 플랫폼 서비스로 제공되는 것에 기반한 정책으로 보인다.

Product

 

다운로드 받아서 직접 설치해서 사용할 수도 있는 것이다.

Downloads

 

다운로드 받아서 직접 설치/사용한다고 하여 무조건 free 인 것은 아니지만,

보안 측면에서도 그렇고 여러가지를 검토해봐도 그렇고

회사에서 사용한다고 하면 다운로드 받아서 직접 설치 후 사용하는 것이 안전하다고 판단된다.

 

 

 

1. Download

웹사이트를 통해서 다운로드를 받는 것이 가장 편하지만,

개인적인 취향으로 CLI를 통해 다운로드 받는 것을 좋아하기 때문에 다음과 같이 진행했다.

 

> wget https://dl.pstmn.io/download/latest/linux64 -O postman-linux-x64.tar.gz

 

 

2. Extract

압축 해제를 하면 된다.

 

참고로 주로 "/opt" 경로를 사용하도록 가이드를 하고 있는데.

개인적인 취향으로 "/srv/install/postman" 경로를 사용했다.

 

> tar -zxvf postman-linux-x64.tar.gz

 

 

3. Symlink

실행 경로 등을 위해 symlink 생성을 해주면 좋다.

 

> sudo ln -s /srv/install/postman/Postman/Postman /usr/bin/postman

 

 

4. Desktop Icon (Optional)

선택적이기는 한데,

GUI에서 편하게 사용하기 위해 아이콘을 만들어 놓으면 좋다.

 

> sudo nano /usr/share/applications/postman.desktop

 

[Desktop Entry]
Type=Application
Name=Postman
Icon=/srv/install/postman/Postman/app/resources/app/assets/icon.png
Exec="/srv/install/postman/Postman/Postman"
Comment=Postman Desktop App
Categories=Development;Code;

 

오른쪽 아래에 예쁘게 생성되어 있는 것을 볼 수 있다.

 

 

5. Execute

실행을 해보자.

위에서 생성한 아이콘을 이용해도 좋고, CLI를 통해서도 실행할 수 있다.

 

웹 인터페이스가 아니라 Client가 실행된다.

 

6. Account

계정을 요구한다.

"Create Free Account"를 선택하면...

 

홈페이지에서 계정 생성하는 화면으로 넘어온다.

굳이 계정을 만들고 싶지는 않은데...

 

그래서 "Continue without an account"를 선택해보면 다음과 같은 화면을 볼 수 있다.

 

부족하더라도 "Open Lightweight API Client"를 이용하도록 하자.

 

 

7. GUI Client

이제 드디어 원하는 화면을 볼 수 있다.

 

사용법은 다음 포스팅으로 정리해보겠다.

반응형

모르는 사람은 모르고 살지만,

아는 사람은 정말 잘 사용한다는 "Config Management (Config 관리)"  도구를 소개하고자 한다.

 

"Config"라고 지칭하면 이를 듣는 사람이 어떤 것을 떠올려야할지 애매한 부분이 있는데,

"Environment Variable"이라고 말하는 것이 좀 더 명확할 것 같다.

 

1. Background

개발을 할 때 DB 서버의 IP 라던지 API 서버의 URL,

인증을 위한 token 값 또는 아이디나 패스워드 같은 값들을 '환경 변수'로 설정을 하곤 한다.

 

Dev 환경이나 Staging, Production 환경에 따라 변경되는 값이라거나

아이디, 패스워드와 같이 보안에 중요한 내역들을 소스 코드 내부에 저장하는 것은 피해야하기 때문이다.

 

간단한 예시를 들어보자.

우선 Python으로 아래와 같은 코드를 만들어봤다.

 

그리고 '환경 변수' 설정에 따라 어떠한 결과가 나오는지 확인해보자.

 

2. dotenv

그런데, 매번 위와 같이 환경 변수를 CLI 형태로 직접 입력해주는 것은 상당히 번거롭다.

귀찮은 측면도 있지만, 재부팅 되거나 하면 환경 변수가 모두 사라지는 것도 문제다.

 

더더욱 어려운 점은 환경 변수 내역에 대한 이력 관리가 안된다는 점이다.

시간이 지나서 모두 잊어버리는 경우도 종종 발생한다.

 

그래서, 이런 이슈를 해결하기 위해 ".env" 파일을 만들어서 활용하는 방법을 사용하곤 한다.

 

Python 코드로 이를 사용하는 방법을 알아보자.

추가 패키지 설치가 필요하니, 가상화 환경을 먼저 꾸며보자.

 

"dotenv" 패키지를 불러들여서 ".env" 파일을 읽어들이도록 할 수 있다.

 

".env" 파일은 다음과 같이 작성이 되어 있으면 된다.

 

실제 환경 변수에 선언된 내역이 없어도

'.env' 파일에 있는 내용을 환경 변수처럼 불러들여서 사용할 수 있다는 것이 확인된다.

 

이렇게 환경 변수를 사용하는 것도 충분히 좋은 방법이지만,

Dev - Stagiing - Production 각 환경에 따른 환경 변수를 한 번에 관리하기에 어려움이 있고

'.env' 파일이 Plain Text 형식이라 token 값이나 아이디, 패스워드 등을 관리하기에는 보안 위협이 있다.

 

3. dotenvx

기존의 dotenv의 부족한 부분을 개선해서 새로 나온 것이 dotenvx 이다.

사이트에 나온 것 처럼 dotenv. better.  !!!

https://dotenvx.com/

 

공식 사이트도 좋지만, GitHub 페이지가 개인적으로는 더 끌린다 ^^

https://github.com/dotenvx/dotenvx

 

dotenvx에서 가장 중점을 두고 있는 3가지 특징은 다음과 같다.

 

Run Anywhere → inconsistency across platforms

- Multiple Environments → juggling multiple environments

- Encryption → leaking your .env file

 

그럼 설치 과정부터 하나씩 살펴보자.

 

 

① Install

정말 다양한 설치 방법을 지원하고 있다.

https://dotenvx.com/docs/install

 

편한 방법들도 있지만,

방화벽 등의 상황에서도 활용 가능한 GitHub Release 파일을 이용한 설치 방법으로 진행해보겠다.

 

 

다운로드 받아서 압축만 풀면 된다.

> curl -L -o dotenvx.tar.gz "https://github.com/dotenvx/dotenvx/releases/latest/download/dotenvx-$(uname -s)-$(uname -m).tar.gz"

> tar -xzf dotenvx.tar.gz

> ./dotenvx help

 

그냥 그대로 실행해보면 그냥 된다.

 

GitHub의 Release에서 다운로드 받아서 압축 풀면 되는 것이다.

https://github.com/dotenvx/dotenvx/releases

 

제대로 사용하기 위해서는 PATH 경로를 추가해줘야 한다.

 

각자의 Shell 상황에 따라 달라질텐데,

필자는 ZSH 환경이기에 다음과 같이 압축 해제한 경로를 추가해줬다.

 

필자가 실행한 내역들도 참고 삼아 공유해본다.

 

② Basic

간단한 사용법을 알아보도록 하자.

'dotenv' 패키지를 불러들이지 않는 기본적인 소스코드로 살펴보겠다.

 

환경 변수로 등록된 내역이 없는 상황에서

'.env' 파일의 내용을 환경 변수로 다룰 수 있는 것을 확인해 볼 수 있다.

 

Dev - Staging - Production 과 같이 여러 실행 환경이 있을 때에는 다음과 같이 사용할 수 있다.

'.env.production' 파일을 우선 생성해보자.

 

실행할 때 '-f' 옵션을 통해 특정 파일을 지칭할 수 있다.

 

'.env' 형식의 파일 이름이 아니라 어떤 파일 이름이라도 상관없이 지정할 수 있는 것이다.

 

이번에는 암호화를 진행해보겠다.

"dotenvx encrypt" 명령어를 이용해서 암호화할 파일을 지정해주면 된다.

 

지정한 파일은 다음과 같이 내용이 변경되고,

 

Private Key 파일을 위한 새로운 파일이 하나 생성되었다.

 

이렇게 암호화를 하면,

데이터(환경 변수 내용)를 commit 해서 버전 관리를 하더라도 그 내용이 유출되지 않도록 할 수 있다.

 

대신 실행하는 환경에는 Private Key가 저장되어 있는 키 파일을 넣어줘야 한다.

당연하게도 키 파일은 소스코드 저장소에 저장되면 안된다.

 

 

설치 과정도 쉽고,

사용 방법도 쉬운 아주 유용한 도구인 것 같다.

반응형

IT 뉴스를 읽다가 발견한 재미난 뉴스가 하나 있었다.

  - https://news.hada.io/topic?id=16044

출처: GeekNews

 

 

어!? SQLite는 그냥 가벼운 맛에 사용하는 database 아니었나!?

 

SQLite에서 발표한 내용이라 믿지 못할 수 있지만, 테스트한 내용을 보면 믿을만한 것 같다.

  - https://sqlite.org/fasterthanfs.html

출처: SQLite

 

그런데, 정말 드라마틱한 속도 차이를 보이는 것은

read latency 그래프에서 보이는 것처럼 Win10과의 비교이다. 빠르다 !!!

 

하지만, 어디까지나 제한적인 상황에서만 SQLite 사용을 추천하고,

대용량이거나 MSA와 같은 상황에서는 Postgres를 사용하는 것이 훨 나은 선택이다.

  - https://news.hada.io/topic?id=6498

 

가만히 생각해보니 SQLite라는 것을 내가 처음 들어본 것은

Android 초창기에 플랫폼 컴파일 및 App 개발해본답시고 깔짝 깔짝 거릴 때이다.

그렇다! Android에서 지금도 사용하는

튼튼한 안정성을 갖고 있는 훌륭한데이터베이스인 것은 분명하다.

  - https://www.epicweb.dev/why-you-should-probably-be-using-sqlite

  - https://news.hada.io/topic?id=11561

 

SQLite에 대한 재미있는 히스토리를 알고 싶으신 분은 다음 인터뷰 내용을 한 번 살펴보기 바란다.

  - https://corecursive.com/066-sqlite-with-richard-hipp/

  - https://news.hada.io/topic?id=4558

 

재미있는 사실 중 하나는

토발즈 아저씨(?)가 Linux Kernel 개발을 위해 Git이라는 소스코드 버전관리 도구를 만든 것처럼

리차드 힙(Richard Hipp) 아저씨도 SQLite 개발을 위해 Fossil이라는 소스코드 버전관리 도구를 만들었다!!!

  - https://fossil-scm.org/

 

 

이제 SQLite를 직접 건드려보자.

 

 

1. SQLite 확인

어떤 버전을 어떻게 설치하면 되는지 공식 사이트를 통해서 확인해보자.

https://www.sqlite.org/

 

Download 메뉴에서 제일 앞에 Android를 위한 binary 파일부터 확인된다는 것이 조금 재미있었다 ^^

https://www.sqlite.org/download.html

 

 

2. Serverless Architecture

SQLite는 Server-Client Architecture가 아닌 Serverless Architecture 방식이다.

  - https://www.sqlite.org/serverless.html

출처: https://www.whatwant.com

 

그렇기 때문에 별도의 Server 설치 과정이 없다.

 

어!? 그러면 위에서 살펴본 SQLite의 다운로드 페이지는 뭐지!?

그냥 Command-Line Tool이다.

 

 

3. SQLite Tools in Ubuntu

① Install

Ubuntu 환경에서는 그냥 패키지 설치를 하면 된다.

> sudo apt install sqlite3

출처: https://www.whatwant.com

 

② Create database

설치된 tool 버전 확인 및 database 생성은 다음과 같이 실행할 수 있다.

> sqlite3 --version

> sqlite3 test.db

 

 

 

③ Create table and example

TABLE 생성 및 간단한 사용 예시는 다음과 같다.

sqlite> CREATE TABLE TEMP (
   ...> id INTEGER PRIMARY KEY,
   ...> name VARCHAR(10),
   ...> number VARCHAR(10));


sqlite> INSERT INTO TEMP(name, number) VALUES('whatwant', '123456789');


sqlite> SELECT * FROM TEMP;

1|whatwant|123456789


sqlite> .exit

 

 

생성된 database file도 확인할 수 있다.

 

④ command

중요한 명령어 몇 가지를 보자면 다음과 같다.

Command Comments
sqlite3 {database filename} 데이터 베이스 생성하면서 접속 (기존 데이터베이스가 있으면 읽어들임)
.open {database filename} 접속된 상태에서 데이터베이스 생성. 읽기 또는 변경
.help 도움말
.database 데이터베이스 파일 위치 보기
.table 테이블 목록 보기
.show 현재 설정 보기
.clone {database filename} 데이터베이스 복제
.mode {option} select 결과 출력 방식 (list / column) column 방식 추
.quit / .exit 프롬프트 종료

 

 

4. SQLite Tools in Python

Python을 이용해서 SQLite 사용하는 예시를 확인해보자.

 

일단 패키지 관리를 위해서 가상환경 설정부터 해놓자.

> python -m venv .venv

> source .venv/bin/activate

 

 

소스코드는 다음과 같이 작성했다.

import sqlite3

conn = sqlite3.connect('test.db')
cursor = conn.cursor()

cursor.execute('SELECT * FROM TEMP')
print(cursor.fetchall())

cursor.close()

 

실행해보면 다음과 같이 예쁘게 잘 나온다.

 

 

SQLite 활용에 대해서 공부하고 싶으신 분은 다음 링크 자료를 참조하면 좋다.

  - https://wikidocs.net/book/1530

 

file-system 사용해서 데이터를 처리하는 경우

SQLite 사용에 대해서도 같이 검토해보면 좋을 것 같다.

반응형

최근 개발 관련 커뮤니티 여기 저기에서 언급되는

재미있고 쓸만한 유틸리티가 하나 등장해서 한 번 설치해서 써봤다.

 

https://heynote.com/

 

많은 개발자들이 칭찬을 하는 여러가지 특징을 살펴보자 !!!

 

① 오픈소스 프로젝트

갑자기 변심할지 모르겠지만, 일단 현재 GitHub에 소스코드가 모두 공개되어 있다.

 

https://github.com/heyman/heynote

 

라이선스를 살펴보니 최근 많은 프로젝트에서 적용하고 있는 "Common Clause" 라이선스를 적용하고 있다.

상업용으로 사용하는 것이 아니면 개인적으로 사용하는데에는 문제가 없을 것 같다.

 

LICENSE

 

② Mac / Win / Linux 모두 지원

기본 업무 환경은 Windows를 사용하고, 개발할 때에는 Linux를 사용하고,

취미 생활 할 때에는 Mac을 사용할 때 모두 Heynote를 설치해서 사용할 수 있다 ^^

 

Downloads

 

심지어 Mac은 갖가지 환경을 모두 지원한다.

아쉬운 것은 서로 Sync까지 되면 좋을 것 같기는 한데.... 기본 기능으로 제공해주진 않는다 ^^

 

③ 블록 단위 텍스트 버퍼

Jupyter Notebook을 써보신 분들은 조금 익숙할 수 있는 여러 블록으로 구성된 하나의 화면을 제공해준다.

 

Heynote

 

하나의 텍스트 버퍼이지만, 여러 유형을 나누어서 구성할 수 있다.

 

④ 멀티 포맷 지원

각 블록은 여러 유형의 Syntax Highlighting과 자동 포맷을 지원한다.

 

Language

 

Sample로 제공하는 것을 보면 알 수 있지만,

특별한 유형으로는 Markdown과 Math 블록이 있다.

 

Markdown은 아직 부족한 기능이라서 checkbox 정도만 되는 것 같지만,

Math의 경우에는 좀 많이 신기했다.

 

 

지금 한창 관심을 받다보니 많은 Issues와 Pull-Request들이 진행되고 있다.

여러분들도 한 번 관심갖고 지켜보면서 많은 사용을 해보면 좋을 것 같다.

 

반응형

▶ ChatGPT

출처: https://www.nature.com/immersive/d41586-023-03919-1

 

국제학술지 '네이처(Nature)'에서 올 한 해 과학계에 큰 화제를 불러일으킨 10명의 인물을 선정하는 '네이처 10(Nature's 10)'을 발표했는데, 역대 최초로 인간이 아닌 생성형 인공지능(AI) 챗봇 '챗GPT(ChatGPT)'를 포함시켰다.

 

ChatGPT라고는 하지만, 크게 바라보면 '생성형 인공지능' 자체가 우리 생활에 정말 큰 영향을 미치게 된 것이다.

지금은 시작일 것이다. 앞으로는 정말 생활 이곳 저곳에서 우리와 함께하게 될 것이다.

 

▶ RAG

 

ChatGPT는 정말 대단한 기능 및 성능을 보여주고 있지만, 한계점도 분명히 있다.

 

일단 ChatGPT가 이것 저것 골고루 많이 아는 똑똑한 아이이긴 하지만,

특정 분야에 대해서 전문적인 지식을 갖고 있다고 하기에는 조금 부족하다.

 

그리고 최신 정보를 알지 못한다는 점도 있고 장기 기억을 유지하기에 어렵다는 점도 있고,

할루시네이션(Hallucination)과 같은 문제도 있는 등

 

ChatGPT는 여러가지 한계점이 분명히 있고 이러한 한계점을 다양한 방법으로 해결하고자 발전하고 있다.

 

이러한 ChatGPT의 한계점을 극복하는 방법 중 하나로

RAG(Retrieval-Augmented Generation, 검색 증강 생성)이라는 것이 최근 엄청난 화두가 되고 있다.

 

출처: https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-customize-rag.html

 

위 그림에서 오른쪽 위를 잘 살펴보기 바란다.

'Knowledge Source'를 별도로 구성하고 이를 일종의 보조 기억장치처럼 사용하는 것이다.

 

어?! 뭔가 떠오르지 않는가!?

그렇다!!! 바로 "데이터베이스(Database)"이다.

 

▶ Embedding

ChatGPT의 경우 기본적으로 사용되는 데이터는 '자연어(Natural Language)'이다.

 

이러한 자연어를 문자 그대로 사용한다고 하면 그 안에 담겨있는 의미나 가치를 다루기가 어렵기 때문에

단어 또는 문장들을 다른 방식으로 표현을 해야하는데

현재 가장 보편적인 표현 방식이 바로 'Vector Embedding'이다.

 

출처: https://www.pinecone.io/learn/vector-embeddings/

 

Vector 형식으로 데이터가 저장이 되기 때문에

Vector 연산을 통해 검색을 한다거나 "king + queen = princess or prince"와 같은 연산도 가능하게 된다.

 

이제 이렇게 임베딩된 데이터들을 데이터베이스에 저장해놓고 쿼리를 해서 사용을 하면 되는데,

PostgreSQL이나 MySQL과 같은 기존 RDB를 이용하기에는 좀 어려움과 불편함이 한 가득이다.

 

▶ Vector Database

그렇다. 말 그대로 Vector 데이터들을 저장하고 제공하는데에 특화된 데이터베이스이다.

예전에도 있었던 데이터베이스 유형이지만, 최근 AI 시대가 되면서 엄청난 대박이 났다.

 

출처: https://techcrunch.com/2023/04/27/pinecone-drops-100m-investment-on-750m-valuation-as-vector-database-demand-grows/?utm_source=oneoneone

 

2021년도에 출시된 Pinecone은 1억 달러 규모의 시리즈 B 투자를 받았다고 한다. 기업 가치는 무려 7억 5천만 달러.

그 외에도 Weaviate, Chroma, Qdrant 等 다양한 Vector Database들이 모두 다 많은 투자를 받았다.

 

이렇게 돈이 쏠린다는 것은 이 분야에 대해서 많은 분들이 성공할거라 믿는다라는 의미일 것이고

그렇다면 우리는 이 부분에 대해서 공부해볼 가치가 충분히 있다!!!

 

▶ Pinecone

최근 가장 많은 인기를 얻고 있는(돈을 투자 받은?!) Pinecone에 대해서 알아보자.

 

출처: https://www.pinecone.io/

 

비용은 어떻게 될까!? (너무 돈! 돈! 하는 것 같아서 조금 그렇지만... 현실이... ^^)

 

출처: https://www.pinecone.io/pricing/

 

비용 부분을 살펴보면서 눈치 챘어야 한다.

그렇다! Pinecone은 On-Premise 형태로 제공되지 않는다. 무조건 SaaS 이다!

그나마 다행인 것은 Free 제공 부분이 있다는 점! ^^

 

출처:  https://www.pinecone.io/

 

Sign-Up은 편하게 되어있다.

 

출처:  https://www.pinecone.io/

 

무료 요금제에서는 Index 1개를 사용할 수 있다.

기존 RDB에서 table 정도로 생각하면 될 것 같다.

 

출처:  https://www.pinecone.io/

 

Python을 이용해서 접근하기 위해서는 API Key 값을 알아야 한다.

왼쪽 메뉴탭에서 'API Keys'를 눌러보면 하나 이미 만들어진 것을 확인할 수 있다.

 

출처:  https://www.pinecone.io/

 

▶ Hello-whatwant

이제 Pinecone을 사용해보자.

 

출처: https://www.pinecone.io/learn/vector-database/

 

Knowledge를 임베딩해서 저장을 하고,

질문을 다시 임베딩해서 쿼리를 던지면 그와 유사도가 높은 것들을 답해주는 과정을 해보고자 한다.

 

기본적인 간단한 workflow이지만, 그래도 다음의 두 가지 사항은 미리 확인/준비 해야 한다.

 

① Python에서 Pinecone을 사용하기 위한 방법

② Embedding Model 선정 및 사용 방법

 

 

 Python에서 Pinecone을 사용하기 위한 방법

  - 앞에서 이미 Pinecone API Key 및 Env 값은 확보(?)했으니 이 부분은 Pass

  - 그리고, 친절하게도 Pinecone 라이브러리를 제공해주니 이를 사용하면 OK

    . https://docs.pinecone.io/docs/quickstart

 

> pip install pinecone-client

 

② Embedding Model 선정 및 사용 방법

  - 이 부분은 정해진 것이 없기에 필요에 따라 각자의 취향/상황에 맞춰서 하면 된다.

    . 지금은 보통 적은 리소스로 괜찮은 성능을 보여준다고 하는 all-MiniLM-L6-v2 모델을 사용해보겠다.

 

출처: https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2

 

 

이제 코드로 풀어보자.

설명을 위해 Colab 환경에서 진행한 내용으로 진행하겠다.

  - https://colab.research.google.com/

 

Colab

 

CPU 환경에서도 실행 가능하긴 하지만, 이왕이면 GPU 환경이 빠르니... 선택하자.

 

 

pinecone-client, sentence-transformer 2개의 패키지 설치가 필요하다.

 

 

앞에서 확인한 pinecone API key 값 및 Env 값을 넣어주면 된다.

warning은 가뿐히 무시하자 ^^

 

 

굳이 torch를 import까지 할 것은 아닌 것 같아서 주석처리했고 ^^

all-MiniLM-L6-v2 모델을 불러왔는데, 출력된 내역을 보면 간단하게나마 spec을 확인할 수 있다.

 

잠시 현재 Pinecone의 Index 상태를 살펴보자면 다음과 같이 아무 것도 없다.

 

 

그러면, 우리는 Index를 하나 만들어보자.

 

 

이렇게 만들면 Pinecone에서는 다음과 같이 결과가 보인다.

 

 

내용물을 살펴보면 다음과 같이 아무 것도 없다 ^^

 

 

테스트하기 위해 넣어줄 데이터는 ChatGPT로 만들어봤다.

프로그래밍 언어를 한 문장으로 정리해달라고 했다.

 

출처: ChatGPT

 

입력을 열심히 해주면 된다.

 

 

그 다음에는 Pinecone으로 넣어줄 형태로 변환을 해야 한다.

'일련번호, 임베딩된 내용, 원본 내용'의 조합으로 생각하면 된다.

 

 

준비가 되었으면 upsert 해주면 된다.

upsert가 뭐냐고? update or insert !!!

 

 

Pinecone에서 확인해보자.

 

 

Pinecone의 상태를 직접 확인해볼 수도 있다.

 

 

query를 요청할 용도의 function을 하나 만들어 보자.

 

 

이제 질문을 해보자.

 

 

잘 나온다 !!!

다른 식으로 질문을 해볼까?

 

 

잘 찾아준다 !!!

 

 

여기까지~~~~ ^^

반응형

집에서 문득 인터넷이 느리다고 느껴지면

갑자기 우리집 통신사 서비스 품질이 낮아진 것이 아닌지 의심이 들곤 한다.

 

그럴 때 사용해볼만한 네트워크(인터넷) 속도 측정 사이트들을 알아보자.

아! 별도의 설치 없이 웹브라우저만으로 사용가능한 사이트만 리스팅했다.

 

 

1. 클라우드플레어

   - IT에 종사하는 분들이 아니라면 모르실 수도 있지만,

     CDN/DNS 서비스 분야에 있어서는 전세계의 1/5 이상이 사용하고 있다는 클라우드플레어의 속도 측정 서비스

   - 규모가 있기에 당연히 우리나라에도 데이터센터가 있다.

   - https://speed.cloudflare.com/

 

 

2. 넷플릭스

   - 넷플릭스 고객들이 OTT 스트리밍을 받아야 하기에 이와 관련하여 운영하는 서비스

   - 결과가 너무 심플해보일 수도 있는데, 상세 정보 보기를 선택하면 조금 더 자세한 정보 확인 가능

   - https://fast.com/ko/

 

 

3. OOKLA

   - 미국 회사로써 웹 테스트 및 네트워크 진단 관련 업체에서 제공하는 서비스

   - 인터넷 서비스 제공 업체가 아니기에 조금 더 신뢰할 수 있을 거라 기대

   - 광고 때문에 조금 지저분해 보이기는 함

   - https://www.speedtest.net/

 

 

4. Google

   - 구글도 구글파이버라는 이름으로 인터넷서비스 사업을 하고 있고, 그래서 운영하는 서비스

   - 아마도 미국에서만 서비스를 하고 있기에 측정 결과가 좀 낮게 나오는 것으로 추정

   - https://fiber.google.com/speedtest/

 

 

5. OpenSpeedTest

   - HTML5를 이용한 네트워크 스피드 테스트를 하는 서비스

   - 다양한 디바이스를 모두 지원

   - https://openspeedtest.com/

 

 

6. 벤치비

   - 인터넷 속도 측정을 하는데에 있어서 빼놓지 못하는 벤치비 (아재 인증?)

   - http://speed.benchbee.co.kr/

 

 

7. Etrality GmbH

   - 주로 모바일 앱으로 인터넷 속도 측정 어플을 개발하는 것으로 여겨지는 업체

   - https://www.speedcheck.org/

 

 

이 정도로 측정하면 어느 정도 추세는 충분히 파악할 수 있을 것 같다.

반응형

https://minikube.sigs.k8s.io/

 

Kubernetes를 공부할 때 실습 환경으로 종종 minikube가 언급되지만

개인적으로 Kubernetes 공부 용도로는 minikube를 절대 추천하지 않는다.

 

사실 여러 부분에서 K8s를 제대로 구성한 것과의 차이가 꽤 크기 때문이다.

 

그리고 제대로 K8s 공부하기 위해서는 3대 이상의 머신 구성이 필요하지만

minikube로는 그런 상황에 대해서 실습을 할 수 없다.

 

그리고, 결정적으로 실제 업무 용도로 minikube를 사용하지 않기에

굳이 minikube에 시간 투자할 필요가 없다고 생각했었다.

 

하지만, 세상 모든 것은 나름의 쓸모가 있다!

 

그렇다. minikube가 필요해서 설치 과정을 정리해보고자 한다 ^^

 

 

0. What you’ll need

- 2 CPUs or more

- 2GB of free memory

- 20GB of free disk space

- Internet connection

- Container or virtual machine manager

  . such as: Docker, QEMU, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware Fusion/Workstation

 

1. 실습 환경

나는 VirtualBox를 이용하기로 했다.

VirtualBox

 

- 2 CPUs or more

- 4GB of free memory

- 50GB of free disk space

- Internet connection

 

VBox

 

- OS: Ubuntu 20.04 LTS

- Container or virtual machine manager : Docker

  . Docker 설치 방법: https://www.whatwant.com/entry/docker-buildx

docker

 

2. minikube 설치

- 공식 홈페이지에서는 각 환경 別 설치 방법을 상당히 편리한 UX로 제공해주고 있다.

  . https://minikube.sigs.k8s.io/docs/start/

 

https://minikube.sigs.k8s.io/docs/start/

 

> curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

> sudo install minikube-linux-amd64 /usr/local/bin/minikube

 

그대로 실행하면 끝이다.

minikube install

 

3. minikube start

minikube를 구동시키면 귀여운 이모지들과 함께 다운로드 및 설치 등이 진행된다.

minikube start

 

4. kubectl 설치

Kubernetes(minikube)에 명령어를 전달하기 위해서는 'kubectl'가 필요하다.

  . https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/

https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/

 

가이드 문서에 있는 내용을 참조해서 설치 진행하면 된다.

kubectl install

 

❯ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

❯ sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

❯ kubectl version --client

 

잘 동작하는지 살펴보자.

kubectl

 

5. Dashboard

대시보드도 손쉽게 볼 수 있다.

dashboard

 

❯ minikube addons enable metrics-server

❯ minikube dashboard 

 

 

간단하게 Kubernetes를 맛보기 하는 용도로 정말 간단하게 설치할 수 있는 좋은 도구이다!!!

 

반응형

+ Recent posts