Skip to content

Instantly share code, notes, and snippets.

View sigridjineth's full-sized avatar
🧙
@thisissigrid

Sigrid Jin (ง'̀-'́)ง oO sigridjineth

🧙
@thisissigrid
View GitHub Profile
@sigridjineth
sigridjineth / vectordb_base.md
Created November 27, 2023 15:24
VectorDB_Base.md

Challenges

벡터 검색 ≠ 벡터 데이터베이스

  • 벡터 검색 자체는 '쉬운' 문제가 아니며, 벡터 데이터베이스가 해결해야 할 전통적인 데이터베이스 문제들이 더 어렵다.
  • 벡터 데이터베이스는 원자성, 일관성, 성능 최적화, 스케일링 등 많은 문제를 해결해야 한다.

벡터의 점진적 색인화 (Incremental Indexing) 문제

  • 새로운 벡터를 추가할 때마다 빠른 조회 속성이 빠르게 떨어지므로 주기적으로 인덱스를 처음부터 다시 구축해야 한다. 이러한 문제를 해결하기 위한 각 VDB의 접근 방식은 서로 상이한데, 예를 들어 Milvus는 일정한 주기마다 full-reindex를 시도하는 데 이 때 높은 CPU 로드를 경험하여 서비스 다운의 원인이 될 수 있다.
  • 벡터를 생성하고 얼마나 빨리 검색 가능해야 하는지가 시스템의 주 설계 요소가 될 수 있다. 이러한 비용과 데이터 지연성 간의 중요한 트레이드오프가 있다.
  • 내가 도입하려고 하는 VDB는 Indexing 전략에 따라 In memory인가 On-disk index인가?
@sigridjineth
sigridjineth / para_cheatsheet.md
Created November 25, 2023 01:22
PARA Cheatsheet 101

PARA 방법론

PARA는 프로젝트, 영역(Areas), 리소스(Resources), 아카이브(Archive)의 네 가지 주요 구성 요소로 이루어져 있습니다. 각 구성 요소는 다음과 같이 정의됩니다:

1. 프로젝트 (Projects)

  • 정의: 일시적이고 구체적인 목표를 가진 작업들.
  • 특징: 프로젝트는 완료될 수 있으며, 그 후에는 종료됩니다.

2. 영역 (Areas)

  • 정의: 지속적인 관리와 관심이 필요한 분야.
@sigridjineth
sigridjineth / intro.md
Created November 24, 2023 00:43
asyncio, uvloop, tip

uvloop

uvloop는 asyncio의 이벤트 루프 대체재로, asyncio를 더 빠르게 만들고, nodejs, gevent 및 다른 python 프레임워크와 비교해봐도, 2배이상의 퍼포먼스를 보여준다.

tip

python3.5 부터 파이썬 표준 라이브러리에 추가된 asyncio는 비동기 I/O 프레임워크이다.

asyncio & uvloop

asnycio는 네트워크 전송, 프로토콜 및 스트림 추상화 컬렉션과 이벤트 루프 기능이 있으며, 이벤트 루프는 asyncio의 핵심이다. asyncio의 주요기능들은 다음과 같다.

  • 스케줄링에 의한 호출
  • 네트워크를 통한 데이터 전송
# 1) Install dependencies: pip install cohere datasets elasticsearch==8.6.2
# 2) Start a local Elasticsearch server: docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:8.6.2
# 3) Get your Cohere API key and past it below
from elasticsearch import Elasticsearch, helpers
import cohere
from datasets import load_dataset
# Get your cohere API key on: www.cohere.com

Collection

  • Collection을 만드는데 다양한 형태로 구성할 수 있다.
  • distance를 통해 내적을 사용할지 유클리안 거리도를 사용할 지 지정할 수 있다.
from qdrant_client import QdrantClient
from qdrant_client.http import models

client = QdrantClient("localhost", port=6333)
@sigridjineth
sigridjineth / aws-sqs.policy
Created July 11, 2023 07:21 — forked from marcelog/aws-sqs.policy
SQS Policy to allow an S3 bucket to publish messages
{
"Version": "2012-10-17",
"Id": "arn:aws:sqs:YOUR-AWS-REGION:YOUR-AWS-ACCOUNT-ID:YOUR-QUEUE-NAME/SQSDefaultPolicy",
"Statement": [
{
"Sid": "example-statement-ID",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
@sigridjineth
sigridjineth / pullAndPushAll.sh
Last active June 5, 2023 01:22
Pull all branches from the origin and push all of them
for branch in $(git branch -r | grep -v '\->'); do
git branch --track ${branch#origin/} $branch
done
for branch in $(git branch --format='%(refname:short)'); do
git push jinhyung $branch
done
@sigridjineth
sigridjineth / pub.md
Created February 7, 2023 11:44
pub-sub pattern

발행구독 패턴

  • 발행구독 패턴은, 비동기 메시징 패러다임이다.
  • 발행자와 구독자가 있고, 그 사이에 브로커(=메시지 큐)가 존재하는 형태이다.
  1. 발행자 메시지의 수신자가 정해져 있지 않다.
  2. 메시지는 정해진 범주에 따라서 구독을 신청한 수신자에게 전달이 된다.
  3. 수신자는 발행자에 대한 정보 없이, 원하는 메시지를 수신할 수 있다.
  4. 메시지 큐 패러다임과 마치 형제같은 관계로, 대형 메시지 지향 미들웨어 솔루션의 일부라고 한다.

발행자와 구독자

@sigridjineth
sigridjineth / linux_configuration.md
Last active February 6, 2023 14:48
Apply the session timeout, shell prompt, and logger to your Ubuntu 18.04 server

Apply the session timeout, shell prompt, and logger to your Ubuntu 18.04 server

Session Timeout

  • Terminate the connection if there is no work from the client side after the certain period of time.
  • a. Open the profile file: sudo vi ~/.profile
  • b. Add the following lines:
HISTTIMEFORMAT="%F %T -- "
export HISTTIMEFORMAT
export TMOUT=600
@sigridjineth
sigridjineth / cors.md
Created February 3, 2023 02:23
A super simple method from the server side to check CORS issue
curl \
--verbose \
--request OPTIONS \
'http://54.180.95.177:8082/aptos/random' \
--header 'Origin: http://sigridjin.com' \
--header 'Access-Control-Request-Headers: Origin, Accept, Content-Type' \
--header 'Access-Control-Request-Method: GET'