BigData

[GPT기술] Llama2 AI모델을 이용한 검색 기술에 활용하기

IT오이시이 2024. 1. 14. 23:59
728x90

 

 

Llama2 는 누구나 무료로 다운로드하여 사용할 수 있는 대규모 오픈 소스 언어 모델입니다.
자율주행차부터 챗봇까지,  AI혁명으로 사회 전반의 삶의 변화가 일어나고 있습니다.  AI의 가장 흥미로운 발전 중 하나는 대규모 언어 모델의 생성입니다. 이러한 모델은 일관되고 이해하기 쉬운 새로운 텍스트를 생성하기 위해 기사 및 소셜 미디어 게시물과 같은 대량의 데이터에 대해 훈련되었습니다.
대규모 언어 모델의 잘 알려진 예로는 OpenAI의 ChatGPT, Google의 Google Bard, Meta의 Llama 2가 있습니다. Meta는 Microsoft와 협력하여 Lama 2 모델을 출시했습니다.
 

Llama2 AI모델에 대한 소개

 
Llama 2는 페이스북 모회사 메타의 AI 그룹에서 개발한 대규모 언어 모델입니다. 이 모델은 사전 학습된 매개변수 규모에 따라 3가지 버전으로 제공되며 Local Computer에서도 작동을 할 수가 있습니다.

1. Llama-2-7B: 70억 개의 매개변수로 사전 학습 (최소 8GB의 RAM 필요)
2. Llama-2-13B: 130억 개의 매개변수로 사전 학습 (최소 16GB의 RAM 필요)
3. Llama-2-70B: 700억 개의 매개변수로 사전 학습 (32GB의 RAM 필요)

 
이 모델들은 연구와 상업적인 용도로 완전 무료로 사용할 수 있으며, 매개변수 규모를 선택하여 다양한 작업에 활용할 수 있습니다. Llama 2는 기존 버전보다 더 많은 토큰으로 학습되었으며, 콘텍스트 길이도 증가하여 다양한 언어 처리 작업에서 효과적으로 활용할 수 있습니다.
 
 
Llama 2는 Amazon Web Services(AWS), Hugging Face 및 기타 제공업체를 통해서도 제공됩니다
 Llama 2의 우선 파트너로서 Microsoft와의 파트너십을 한 단계 더 발전시키고 생성 AI에 대한 노력을 확대하였습니다.
이제 Llama 2는  Azure AI 모델 카탈로그에서도 제공됩니다. Microsoft Azure를 사용하는 개발자는 Llama 2를 사용하여 Azure  클라우드 기반에서 구축 할 수 있습니다.  또한 Windows에서 로컬로 실행되도록 최적화되어 개발자가 다양한 플랫폼에서 고객에게 생성적 AI 경험을 제공할 때 원활한 워크플로를 제공합니다.
 
 


Lama2를 이용한 검색 기술에 활용하기

Lama2   lama.search()를 이용한 데이터 조회 조건 사용법 정리하여 보았습니다.
 

1. 단일 조건 검색 : lama.eq("key", "value")

# 특정 Key 값이 "Value"인 데이터를 찾는다.
criteria = lama.eq("key", "value")
search_result = lama.search(json_data, criteria)

 
 

2. 범위 기반 조회: lama.between("age", 25, 35)

 

# 연령이 25~35인 사람을 찾는다.
criteria = lama.between("age", 25, 35)
search_result = lama.search(json_data, criteria)

 
 

3. 부분 문자열 포함 여부 조회: lama.contains("name", "John")

 

# 이름이 john인 사람을 찾는다.
criteria = lama.contains("name", "John")
search_result = lama.search(json_data, criteria)

 
 

4. 여러 조건을 AND로 결합하여 조회: lama.and_( 조건 1, 조건 2)

  -  조건 1과 조건 2를 만족하는 데이터를 찾는다.

# 30세 이상의 여성을 찾는다.
criteria = lama.and_(lama.eq("gender", "Female"), lama.gte("age", 30))
search_result = lama.search(json_data, criteria)

 

5. OR 연산자를 사용한 조회:  lama.or_( 조건 1, 조건 2)

  -  조건 1 또는  조건 2를 만족하는 데이터를 찾는다.

# 도시 뉴욕 또는 로스엔젤런스에 거주하는 사람을 찾는다.
criteria = lama.or_(lama.eq("city", "New York"), lama.eq("city", "Los Angeles"))
search_result = lama.search(json_data, criteria)

 

6. 리스트 내 요소 조회: lama.contains("interests", "Skiing")

    - 리스트에 포함된 데이터를 찾는다.

# interests 리스트에서 "Skiing"가 포함된 경우를 찾는다.
criteria = lama.contains("interests", "Skiing")
search_result = lama.search(json_data, criteria)

 


예시 1 - Llama2를 이용한 jason data 검색 

- 예시  JSON 데이터를 확장하여 30세 이상의 여성 중 스키를 좋아하는 사람을 찾는다.
 

from lama2 import Lama

# Lama 객체 생성
lama = Lama()

# 검색할 JSON 데이터 (예시)
json_data = {
    "name": "Jane Smith",
    "age": 35,
    "gender": "Female",
    "interests": ["Skiing", "Hiking"],
    "city": "Mountain Town"
}

# Lama를 사용하여 확장된 조건으로 검색 수행
criteria = lama.and_(
    lama.gte("age", 30),
    lama.eq("gender", "Female"),
    lama.contains("interests", "Skiing")
)

search_result = lama.search(json_data, criteria)

# 결과 출력
print("검색 결과:", search_result)

 
 

예시 2 - Llama2를 이용한 jason data 검색 

단순한 문장보다 정확한 결과를 도출하고자 Lama2의 데이터 검색으로 json data로 찾는 조건을 제공하여 조회하는 방법을 작성해 보았습니다.
  - json_input_data로 찾는 조건을 만들어 유사한 데이터 찾는 예시입니다.

from lama2 import Lama

# Lama 객체 생성
lama = Lama()

from lama2 import Lama

# Json_input_data
json_input_data = {
    "age": "above 30",
    "interests": ["Movie", "Skiing"]
}

# 검색할 JSON 데이터
json_data = [
    {
        "id": 201,
        "name": "Jane Smith",
        "age": 35,
        "gender": "Female",
        "interests": ["Skiing", "Hiking"],
        "city": "Mountain Town"
    },
    {
        "id": 202,
        "name": "James Mason",
        "age": 31,
        "gender": "Male",
        "interests": ["Soccer", "Skiing", "Hiking"],
        "city": "EmberHouse Avenue"
    },
    {
        "id": 203,
        "name": "Malcom Edison",
        "age": 29,
        "gender": "Male",
        "interests": ["Soccer", "Baseball"],
        "city": "Mountain Town"
    },
    {
        "id": 205,
        "name": "Elise Mire",
        "age": 40,
        "gender": "Female",
        "interests": ["Movie", "Musical"],
        "city": "EmberHouse Avenue"
    }
]

# Lama 객체 생성
lama = Lama()

# Json_input_data를 Lama의 criteria로 변환
criteria = lama.and_(
    lama.gte("age", 30),
    lama.contains_all("interests", json_input_data["interests"])
)

# 결과를 저장할 리스트 초기화
matching_people = []

# Lama를 사용하여 검색 수행
for person in json_data:
    if lama.match(person, criteria):
        matching_people.append({"id": person["id"], "name": person["name"]})

# 결과 출력
print("유사한 사람들:", matching_people)
728x90
반응형