MYSQL에서 제공하는 Vector Data 처리기능

이미지
  MYSQL에서 제공하는 Vector Data 처리기능 MySQL은 벡터 데이터 처리 기능을 내장하여 AI 기반 애플리케이션 개발을 지원합니다. 아래는 주요 기능과 사용 예시, 기존 벡터 DB 대비 장점을 정리한 내용입니다.     MySQL의 Vector DB 기능 1. 벡터 데이터 타입 지원 VECTOR(n) : n차원 벡터 저장 가능 (예: VECTOR(768) )[2][5]. 저장 방식 : VARBINARY 또는 리스트 형식 문자열로 4바이트 부동소수점 저장[2]. 크기 제한 : 2048~16383 차원 지원 (기본값 2048)[2].   2. 벡터 변환 함수 STRING_TO_VECTOR() : 문자열을 벡터로 변환 (예: '[1][2][3]' → 이진값)[2][5]. VECTOR_TO_STRING() : 이진 벡터를 문자열로 출력[2]. VECTOR_DIM() : 벡터의 차원 수 계산[2].   3. 유사도 계산 DISTANCE() : 코사인/유클리드/내적 유사도 계산 지원[2]. SELECT DISTANCE(embedding, '[1,2,3]' , 'COSINE' ) FROM books;     4. 벡터 연산 통합 표준 SQL 구문 : INSERT , UPDATE , JOIN 등 기존 SQL 문법과 호환[2][5]. 예시 테이블 생성 : CREATE TABLE books ( id INT PRIMARY KEY, title VARCHAR ( 60 ), embedding VECTOR( 768 ) USING VARBINARY );     사용 예시 1. 벡터 데이터 삽입 INSERT INTO books (title, embedding) VALUES ( 'AI 입문서' , STRING_TO_VECTOR( '[0.1,0.4,0.7]' ));   2. 유사도 검색 ...

Python 리스트형 - Lamda 함수를 이용한 리스트 활용

 



Python 리스트형 - Lamda 함수를 이용한 리스트 활용

 

 

람다 함수 (lambda function)  ?

람다(lambda) 함수는 일반적인 함수 선언과는 달리 이름이 없고 한 줄로 표현됩니다. 주로 간단한 연산이나 함수를 인자로 받아 처리할 때 사용됩니다. 람다 함수는 익명 함수로 함축적인 문장으로 간단한 연산이나 변환에 적합합니다. 

람다 함수를 사용하면 간단한 반복과 데이터 처리를 쉽게 할수 있습니다. 그러나 람다 함수는 기능이 함축적이기 때문에 이해하거나 사용하기 복잡하고 까다롭습니다. 리스트 처리를 위해서 간단한 방안을 찾아 람다 함수를 정리해 봅니다.

 

람다 함수의 사용법

# 람다함수의 선언

lambda arguments: expression

# arguments는 함수의 입력 매개변수이고
# expression은 해당 매개변수를 이용한 연산입니다.



square = lambda x: x**2
print(square(5))
# 출력: 25

# * 람다 함수는 lambda 키워드로 시작하고, 매개변수 x를 받아 x**2를 반환하는 함수를 정의

 

람다 함수는 주로 map(), filter(), sorted()와 같은 함수와 함께 사용됩니다. 예를 들어, 리스트의 각 요소를 제곱하는 경우

 

1. map() 함수와 람다 함수:

map() 함수는 list 형 변수와 같이 순회 가능한(iterable) 객체의 모든 요소에 적용하여 새로운 iterable을 반환합니다. 

# map을 이용한 lamda

numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x**2, numbers))

print(squared_numbers)
# 출력: [1, 4, 9, 16, 25]

 

2. filter() 함수와 람다 함수:


filter() 함수는 주어진 함수로 걸러진 요소들로 이루어진 iterable을 반환합니다. 람다 함수를 filter() 함수와 함께 사용하여 특정 조건을 만족하는 요소만 남길 수 있습니다.

# filter를 이용한 lamda

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))

print(even_numbers)
# 출력: [2, 4, 6, 8, 10]

 

3. sorted() 함수와 람다 함수:


sorted() 함수는 iterable의 요소를 정렬한 리스트를 반환합니다. 람다 함수를 sorted() 함수와 함께 사용하여 정렬 기준을 지정할 수 있습니다.

# sorted를 이용한 람다

words = ['apple', 'banana', 'orange', 'kiwi']
sorted_words = sorted(words, key=lambda x: len(x))

print(sorted_words)
# 출력: ['kiwi', 'apple', 'banana', 'orange']

 


람다함수를 이용한 리스트 활용

 

람다 함수를 이용하면 데이터를 쉽고 간단하게 처리가 가능하다 그러나 람다함수는 복잡할 수록 가독성이 떨어지므로 복잡한 식보다는 간단하게 사용하는 것이 현명하다. (다른 사람이 유지보수 하려면 복잡하게 구성하기 보다 간단하게 만들어야 하고, 간단한 것보다는 설명이 쉽게 가능하도록 하면  나중에 유지보수가 쉬워진다는 관점을 반드시 숙고하여야 한다는것이다.)

 

1. 리스트 내에서 람다 함수 사용하기:

# python lamda 를 이용한 리스트 만들기


landa_list = list(map(lambda x: f"a{x}", range(1, 6)))
print(landa_list)
# 출력 : ['a1', 'a2', 'a3', 'a4', 'a5']


squared_numbers = list(map(lambda x: x**2, range(1, 6)))
print(squared_numbers)
# 출력 : [1, 4, 9, 16, 25]
lambda x: f"a{x}", range(1, 6) :  f-string을 이용하여 'a' + '1'  ~ 'a' + 6 까지 반복하여 문자를 만든다
map ( 'a1', ~~ 'a6' ) 으로 리스트 자료를 만든다

 

2. 조건에 따라 필터링하기:

numbers = [1, 2, 3, 4, 5]

even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)
# 출력: [2, 4]

 

3. 람다 함수를 이용한 정렬

words = ['apple', 'banana', 'orange', 'kiwi']

sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)
# 출력: ['kiwi', 'apple', 'banana', 'orange']

 

4. 다수의 인자 사용하기:

combine_lists = lambda a, b: a + b

result = combine_lists([1, 2, 3], [4, 5, 6])

print(result)
# 출력: [1, 2, 3, 4, 5, 6]

 

5. 람다 함수를 변수에 할당하기:

multiply = lambda x, y: x * y
result = multiply(3, 4)

print(result)
# 출력: 12

 

댓글

댓글 쓰기

이 블로그의 인기 게시물

Kraken api - get token with python

[좋은글] 나침반의 바늘이 흔들리는 한 그 나침반은 틀리는 일이 없다 - 신영복

How to Start WSL2 : Windows Subsystem for Linux (WSL) 설치와 사용법