Coding/Study

[AI]RAG 기본 이론&실습(3)

후__아 2024. 8. 5. 17:26

https://hoooa.tistory.com/67

 

[AI]RAG 기본 이론&실습(2)

https://hoooa.tistory.com/65 에서 정리했던 RAG의 기본 파이프라인(Data Load, Text Split, Indexing, Retrieval, Generation)을 한층 자세하게 들어가보자~ [AI]RAG 기본 이론&실습(1)RAG에 대해선 이전에 아주 짧게 다뤄

hoooa.tistory.com

에 이어서  마지막 RAG 정리글!

4. Vector Store

임베딩 벡터를 효육적으로 저장&검색하는 시스템(DB)

 

- 벡터 저장: 고차원 임베딩 벡터(텍스트/이미지/소리 등)를 처리 가능한 데이터 저장 구조 필요

- 벡터 검색: 저장벡터 중 사용자 쿼리에 가장 유사한 벡터를 찾는 과정, ex) 코사인 유사도/유클리드 거리 등

- 결과 반환

1. Chroma

- 임베딩/메타데이터 저장, 문서/쿼리 임베딩, 임베딩 검색 가능

(1) 유사도 기반 검색
### Chroma - 유사도 기반
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma

loader = TextLoader(path + 'test.txt')
data = loader.load()

text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(
    chunk_size=250,
    chunk_overlap=50,
    encoding_name='cl100k_base'
)

texts = text_splitter.split_text(data[0].page_content)
embeddings_model = OpenAIEmbeddings()
db = Chroma.from_texts(
    texts, 
    embeddings_model,
    collection_name = 'test',
    persist_directory = path,
    collection_metadata = {'hnsw:space': 'cosine'}, # l2 is the default
)

print(texts[0])
db
한국의 역사는 수천 년에 걸쳐 이어져 온 긴 여정 속에서 다양한 문화와 전통이 형성되고 발전해 왔습니다. 고조선에서 시작해 삼국 시대의 경쟁, 그리고 통일 신라와 고려를 거쳐 조선까지, 한반도는 많은 변화를 겪었습니다.

고조선은 기원전 2333년 단군왕검에 의해 세워졌다고 전해집니다. 이는 한국 역사상 최초의 국가로, 한민족의 시원이라 할 수 있습니다. 이후 기원전 1세기경에는 한반도와 만주 일대에서 여러 소국이 성장하며 삼한 시대로 접어듭니다.
<langchain_community.vectorstores.chroma.Chroma at 0x7ac8a7e18ac0>
query = '한국의 최초 국가는 어디인가요?'
docs = db.similarity_search(query)
print(docs[0].page_content)
WARNING:chromadb.segment.impl.vector.local_persistent_hnsw:Number of requested results 4 is greater than number of elements in index 3, updating n_results = 3
한국의 역사는 수천 년에 걸쳐 이어져 온 긴 여정 속에서 다양한 문화와 전통이 형성되고 발전해 왔습니다. 고조선에서 시작해 삼국 시대의 경쟁, 그리고 통일 신라와 고려를 거쳐 조선까지, 한반도는 많은 변화를 겪었습니다.

고조선은 기원전 2333년 단군왕검에 의해 세워졌다고 전해집니다. 이는 한국 역사상 최초의 국가로, 한민족의 시원이라 할 수 있습니다. 이후 기원전 1세기경에는 한반도와 만주 일대에서 여러 소국이 성장하며 삼한 시대로 접어듭니다.

 

(2) MMR

최대 한계 관련성(Maximum Marginal Relevance) 검색 방식

유사성과 다양성의 균형 → 검색 결과 품질 향상

쿼리와 관련성이 높으면서, 서로 다른 측면/정보를 제공하도록 설정(유사도 상위 fetch_k개의 문서)

### Chroma - MMR

from langchain_community.document_loaders import PyMuPDFLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings


loader = PyMuPDFLoader(path+'SPRI_AI_Brief_2023년12월호_F.pdf')
data = loader.load()
text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(
    chunk_size=1000,
    chunk_overlap=200,
    encoding_name='cl100k_base'
)

documents = text_splitter.split_documents(data)
print(len(documents))

embeddings_model = OpenAIEmbeddings()
db2 = Chroma.from_documents(
    documents, 
    embeddings_model,
    collection_name = 'esg',
    persist_directory = path,
    collection_metadata = {'hnsw:space': 'cosine'}, # l2 is the default
)

db2
<langchain_community.vectorstores.chroma.Chroma at 0x7ac8a426e980>
# MMR
# 상위 10개의 유사 문서 중 서로 다른 정보를 제공하는 4개 문서 선택
mmr_docs = db2.max_marginal_relevance_search(query, k=4, fetch_k=10)
print(len(mmr_docs))
print(mmr_docs[0].page_content)


## 유사도 검색으로 하면
# query = '통이치엔원의 세부내용을 알려줘?'
# docs = db2.similarity_search(query)
# print(docs[0].page_content)
4
1. 정책/법제  
2. 기업/산업 
3. 기술/연구 
 4. 인력/교육
알리바바 클라우드, 최신 LLM ‘통이치엔원 2.0’ 공개
n 알리바바 클라우드가 복잡한 지침 이해, 광고문구 작성, 추론, 암기 등에서 성능이 향상된 최신 
LLM ‘통이치엔원 2.0’을 공개
n 알리바바 클라우드는 산업별로 특화된 생성 AI 모델을 공개하는 한편, 모델 개발과 애플리케이션 
구축 절차를 간소화하는 올인원 AI 모델 구축 플랫폼도 출시
KEY Contents
£ 알리바바의 통이치엔원 2.0, 주요 벤치마크 테스트에서 여타 LLM 능가
n 중국의 알리바바 클라우드가 2023년 10월 31일 열린 연례 기술 컨퍼런스에서 최신 LLM ‘통이
치엔원(Tongyi Qianwen) 2.0’을 공개
∙알리바바 클라우드는 통이치엔원 2.0이 2023년 4월 출시된 1.0 버전보다 복잡한 지침 이해, 
광고문구 작성, 추론, 암기 등에서 성능이 향상되었다고 설명
∙통이치엔원 2.0은 언어 이해 테스트(MMLU), 수학(GSM8k), 질문 답변(ARC-C)과 같은 벤치마크 
테스트에서 라마(Llama-2-70B)와 GPT-3.5를 비롯한 주요 AI 모델을 능가 
∙통이치엔원 2.0은 알리바바 클라우드의 웹사이트와 모바일 앱을 통해 대중에 제공되며 개발자는 
API를 통해 사용 가능 
n 알리바바 클라우드는 여러 산업 영역에서 생성 AI를 활용해 사업 성과를 개선할 수 있도록 지원
하는 산업별 모델도 출시
∙산업 영역은 고객지원, 법률 상담, 의료, 금융, 문서관리, 오디오와 동영상 관리, 코드 개발, 캐릭터 
제작을 포함
n 알리바바 클라우드는 급증하는 생성 AI 수요에 대응해 모델 개발과 애플리케이션 구축 절차를 
간소화하는 올인원 AI 모델 구축 플랫폼 ‘젠AI(GenAI)’도 공개
∙이 플랫폼은 데이터 관리, 모델 배포와 평가, 신속한 엔지니어링을 위한 종합 도구 모음을 제공하여 
다양한 기업들이 맞춤형 AI 모델을 한층 쉽게 개발할 수 있도록 지원
print(mmr_docs[-1].page_content)   # 가장 유사도가 낮은 문서
£ AI 에이전트가 의료와 교육, 생산성, 엔터테인먼트·쇼핑 영역의 서비스 대중화를 주도할 것
n 에이전트로 인해 주목할 만한 변화는 고비용 서비스의 대중화로 특히 △의료 △교육 △생산성 △
엔터테인먼트·쇼핑의 4개 영역에서 대규모 변화 예상
∙(의료) 에이전트가 환자 분류를 지원하고 건강 문제에 대한 조언을 제공하며 치료의 필요 여부를 결정하면서 
의료진의 의사결정과 생산성 향상에 기여
∙(교육) 에이전트가 1대 1 가정교사의 역할을 맡아 모든 학생에게 평등한 교육 기회를 제공할 수 있으며, 
아이가 좋아하는 게임이나 노래 등을 활용해 시청각 기반의 풍부한 맞춤형 교육 경험을 제공
∙(생산성) 사용자의 아이디어를 기반으로 에이전트가 사업계획과 발표 자료 작성, 제품 이미지 생성을 
지원하며, 임원의 개인 비서와 같은 역할도 수행 
∙(엔터테인먼트·쇼핑) 쇼핑 시 에이전트가 모든 리뷰를 읽고 요약해 최적의 제품을 추천하고 사용자 대신 
주문할 수 있으며 사용자의 관심사에 맞춤화된 뉴스와 엔터테인먼트를 구독 가능
☞ 출처 : GatesNotes, AI is about to completely change how you use computers, 2023.11.09.

 

2. FAISS

Facebook AI Simlarity Search, 벡터의 압축된 표현 사용 - 메모리 사용 ↓ 검색 속도↑

(1) 유사도 기반 검색

- l2(default): 유클리디안 거리

- ip(내적): 두 벡터의 방향성

- cosine: 각도가 작을수록 G

# pip install faiss-cpu sentence-transformers

### FAISS - 유사도 기반
from langchain_community.vectorstores import FAISS
from langchain_community.vectorstores.utils import DistanceStrategy
from langchain_community.embeddings import HuggingFaceEmbeddings

embeddings_model = HuggingFaceEmbeddings(
    model_name='jhgan/ko-sbert-nli',
    model_kwargs={'device':'cpu'},
    encode_kwargs={'normalize_embeddings':True},
)

vectorstore = FAISS.from_documents(documents,
                                   embedding = embeddings_model,
                                   distance_strategy = DistanceStrategy.COSINE
                                  )

query = '질문~~'
docs = vectorstore.similarity_search(query)
print(len(docs))
print(docs[0].page_content)
mmr_docs = vectorstore.max_marginal_relevance_search(query, k=4, fetch_k=10)
print(len(mmr_docs))
print(mmr_docs[0].page_content)
## FAISS DB 로컬 저장
vectorstore.save_local(path+'faiss')

db3 = FAISS.load_local(path+'faiss', embeddings_model)   # 저장 시 사용된 임베딩 모델과 동일해야 함

 

5. Retriever

Retrieval Augmented Generation의 검색도구

LangChain이 제공하는 다양한 검색도구

1. Vector Store Retriever

대량의 텍스트 데이터에서 효율적 검색

from langchain_community.document_loaders import PyMuPDFLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_community.vectorstores.utils import DistanceStrategy
from langchain_community.embeddings import HuggingFaceEmbeddings

# 데이터 로드 및 chunk 분할
loader = PyMuPDFLoader(path+'SPRI_AI_Brief_2023년12월호_F.pdf')
data = loader.load()
text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(
    chunk_size=1000,
    chunk_overlap=200,
    encoding_name='cl100k_base'
)

documents = text_splitter.split_documents(data)

# 임베딩 후 저장
embeddings_model = HuggingFaceEmbeddings(
    model_name='jhgan/ko-sbert-nli',
    model_kwargs={'device':'cpu'},
    encode_kwargs={'normalize_embeddings':True},
)
vectorstore = FAISS.from_documents(documents,
                                   embedding = embeddings_model,
                                   distance_strategy = DistanceStrategy.COSINE  
                                  )

# 단일 검색
query = '통이치엔원의 세부내용을 알려줘'
retriever = vectorstore.as_retriever(search_kwargs={'k': 1}   )# 가장 유사도가 높은 문장 하나
docs = retriever.get_relevant_documents(query)
print("*******************단일 검색*******************")
print(len(docs))
print(docs[0])

# MMR 검색
retriever = vectorstore.as_retriever(
    search_type='mmr',
    search_kwargs={'k': 5, 'fetch_k': 50}
)
docs = retriever.get_relevant_documents(query)
print("*******************MMR 검색*******************")
print(len(docs))
print(docs[0])

# MMR 검색2
retriever = vectorstore.as_retriever(
    search_type='mmr',
    search_kwargs={'k': 5, 'lambda_mult': 0.15}   # lambda_mult: 관련성-다양성 균형, 작을수록 다양성 G
)
docs = retriever.get_relevant_documents(query)
print(len(docs))
print(docs[-1])

# 유사도 점수 임계값 기반 검색
# Similarity score threshold (기준 스코어 이상인 문서를 대상으로 추출)
retriever = vectorstore.as_retriever(
    search_type='similarity_score_threshold',
    search_kwargs={'score_threshold': 0.3}  # 쿼리와 최소 0.3 이상의 유사도인 문서만
)
docs = retriever.get_relevant_documents(query)
print(len(docs))

# 메타데이터 필터링
retriever = vectorstore.as_retriever(
    search_kwargs={'filter': {'format':'PDF 1.4'}}
)
docs = retriever.get_relevant_documents(query)
print(len(docs))
# 실제 답변 생성
# 검색 - 프롬프트 생성 - 모델 - 문서 포맷팅 - 체인 - 실행

from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

# retrieval
retriever = vectorstore.as_retriever(
    search_type = 'mmr',
    search_kwargs = {'k': 5, 'lambda_mult': 0.15}
)
docs = retriever.get_relevant_documents(query)

# prompt
template = '''Answer the question based only on the following context:
{context}
Question: {question}
'''
prompt = ChatPromptTemplate.from_template(template)

# model
llm = ChatOpenAI(
    model = 'gpt-3.5-turbo-0125',
    temperature = 0,
    max_tokens = 500,
)

def format_docs(docs):
  return '\n\n'.join([d.page_content for d in docs])

# chain
chain = prompt | llm | StrOutputParser()

# run
response = chain.invoke({'context': (format_docs(docs)), 'question': query})

 

2. Multi Query Retriever

VSRetriever의 한계 극복

입력된 쿼리의 의미를 다각도로 포착 == 단일 쿼리 기반 다양한 관점의 멀티 쿼리를 자동 생성

ㄴLLM을 통해 입력 문장을 Paraphrasing

# 예시에서는 임베딩 모델을 huggingface에서 따로 다운받고 FAISS를 활용했는데, 본인이 테스트한 문서에서 맞지 않는 듯 하여 설정을 바꿨다

from langchain_community.document_loaders import PyMuPDFLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma


# 데이터 로드 및 chunk 분할
loader = PyMuPDFLoader(path+'SPRI_AI_Brief_2023년12월호_F.pdf')
data = loader.load()
text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(
    chunk_size=1000,
    chunk_overlap=200,
    encoding_name='cl100k_base'
)

documents = text_splitter.split_documents(data)

embeddings_model = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(
    documents, 
    embeddings_model,
    collection_name = 'test',
    persist_directory = path,
    collection_metadata = {'hnsw:space': 'cosine'}, # l2 is the default
)
from langchain.retrievers.multi_query import MultiQueryRetriever

quest = '통이치엔원에 대해 알려줘'

llm = ChatOpenAI(
    model='gpt-3.5-turbo-0125',
    temperature=0,
    max_tokens=500,
)
retriever_from_llm = MultiQueryRetriever.from_llm(
    retriever = vectorstore.as_retriever(), llm = llm
)

# 로깅 설정: multiquery에 대한 정보를 로그로 기록&확인
import logging
logging.basicConfig()
logging.getLogger('langchain.retrievers.multi_query').setLevel(logging.INFO)

unique_docs = retriever_from_llm.get_relevant_documents(query=quest)
print(len(unique_docs))
print(unique_docs[0])
INFO:langchain.retrievers.multi_query:Generated queries: ['1. 어떤 정보가 통이치엔원에 대해 있는가?', '2. 통이치엔원에 관련된 자료를 찾아볼까요?', '3. 통이치엔원에 대한 내용을 알고 싶어요.']
7
page_content='1. 정책/법제  
2. 기업/산업 
3. 기술/연구 
 4. 인력/교육
알리바바 클라우드, 최신 LLM ‘통이치엔원 2.0’ 공개
n 알리바바 클라우드가 복잡한 지침 이해, 광고문구 작성, 추론, 암기 등에서 성능이 향상된 최신 
LLM ‘통이치엔원 2.0’을 공개
n 알리바바 클라우드는 산업별로 특화된 생성 AI 모델을 공개하는 한편, 모델 개발과 애플리케이션 
구축 절차를 간소화하는 올인원 AI 모델 구축 플랫폼도 출시
KEY Contents
£ 알리바바의 통이치엔원 2.0, 주요 벤치마크 테스트에서 여타 LLM 능가
n 중국의 알리바바 클라우드가 2023년 10월 31일 열린 연례 기술 컨퍼런스에서 최신 LLM ‘통이
치엔원(Tongyi Qianwen) 2.0’을 공개
∙알리바바 클라우드는 통이치엔원 2.0이 2023년 4월 출시된 1.0 버전보다 복잡한 지침 이해, 
광고문구 작성, 추론, 암기 등에서 성능이 향상되었다고 설명
∙통이치엔원 2.0은 언어 이해 테스트(MMLU), 수학(GSM8k), 질문 답변(ARC-C)과 같은 벤치마크 
테스트에서 라마(Llama-2-70B)와 GPT-3.5를 비롯한 주요 AI 모델을 능가 
∙통이치엔원 2.0은 알리바바 클라우드의 웹사이트와 모바일 앱을 통해 대중에 제공되며 개발자는 
API를 통해 사용 가능 
n 알리바바 클라우드는 여러 산업 영역에서 생성 AI를 활용해 사업 성과를 개선할 수 있도록 지원
하는 산업별 모델도 출시
∙산업 영역은 고객지원, 법률 상담, 의료, 금융, 문서관리, 오디오와 동영상 관리, 코드 개발, 캐릭터 
제작을 포함
n 알리바바 클라우드는 급증하는 생성 AI 수요에 대응해 모델 개발과 애플리케이션 구축 절차를 
간소화하는 올인원 AI 모델 구축 플랫폼 ‘젠AI(GenAI)’도 공개
∙이 플랫폼은 데이터 관리, 모델 배포와 평가, 신속한 엔지니어링을 위한 종합 도구 모음을 제공하여 
다양한 기업들이 맞춤형 AI 모델을 한층 쉽게 개발할 수 있도록 지원' metadata={'author': 'dj', 'creationDate': "D:20231208132838+09'00'", 'creator': 'Hwp 2018 10.0.0.13462', 'file_path': '/content/drive/MyDrive/재정정보경진대회/SPRI_AI_Brief_2023년12월호_F.pdf', 'format': 'PDF 1.4', 'keywords': '', 'modDate': "D:20231208132838+09'00'", 'page': 11, 'producer': 'Hancom PDF 1.3.0.542', 'source': '/content/drive/MyDrive/재정정보경진대회/SPRI_AI_Brief_2023년12월호_F.pdf', 'subject': '', 'title': '', 'total_pages': 23, 'trapped': ''}
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain.schema.runnable import RunnablePassthrough


# Prompt
template = '''Answer the question based only on the following context:
{context}

Question: {question}
'''

prompt = ChatPromptTemplate.from_template(template)

# Model
llm = ChatOpenAI(
    model='gpt-3.5-turbo-0125',
    temperature=0,
)

def format_docs(docs):
    return '\n\n'.join([d.page_content for d in docs])

# Chain
chain = (
    {'context': retriever_from_llm | format_docs, 'question': RunnablePassthrough()}
    | prompt
    | llm
    | StrOutputParser()
)

# Run
response = chain.invoke('통이치엔원에 대해 요약해서 알려주세요.')
response
INFO:langchain.retrievers.multi_query:Generated queries: ['1. 요약해서 통이치엔원에 대한 정보를 알려드릴까요?', '2. 통이치엔원에 대한 간략한 설명을 드릴까요?', '3. 통이치엔원에 대한 요약 정보를 제공해 드릴까요?']
알리바바 클라우드가 최신 LLM '통이치엔원 2.0'을 공개했는데, 이는 복잡한 지침 이해, 광고문구 작성, 추론, 암기 등에서 성능이 향상된 AI 모델이다. 이 모델은 다양한 벤치마크 테스트에서 다른 주요 AI 모델을 능가하며, 산업별로 특화된 생성 AI 모델을 제공하고 올인원 AI 모델 구축 플랫폼도 출시했다.

 

3. Contextual compression

검색된 문서 중 쿼리와 관련된 정보만 추출하여 반환

무관한 정보를 제거하는 방식

 

우선 기본 검색기를 먼저 설정한 후

quest = '통이치엔원에 대해 알려줘'

llm = ChatOpenAI(
    model='gpt-3.5-turbo-0125',
    temperature=0,
    max_tokens=500,
)
base_retriever = vectorstore.as_retriever(
                                search_type='mmr',
                                search_kwargs={'k':7, 'fetch_k': 20})
docs = base_retriever.get_relevant_documents(question)

해당 문서들을 효율적으로 압축함

from langchain.retrievers import ContextualCompressionRetriever
from langchain.retrievers.document_compressors import LLMChainExtractor

compressor = LLMChainExtractor.from_llm(llm)
compression_retriever = ContextualCompressionRetriever(
    base_compressor=compressor, base_retriever=base_retriever
)

compressed_docs = compression_retriever.get_relevant_documents(quest)
print(len(compressed_docs))
[Document(metadata={'author': 'dj', 'creationDate': "D:20231208132838+09'00'", 'creator': 'Hwp 2018 10.0.0.13462', 'file_path': '/content/drive/MyDrive/재정정보경진대회/SPRI_AI_Brief_2023년12월호_F.pdf', 'format': 'PDF 1.4', 'keywords': '', 'modDate': "D:20231208132838+09'00'", 'page': 11, 'producer': 'Hancom PDF 1.3.0.542', 'source': '/content/drive/MyDrive/재정정보경진대회/SPRI_AI_Brief_2023년12월호_F.pdf', 'subject': '', 'title': '', 'total_pages': 23, 'trapped': ''}, page_content='알리바바 클라우드, 최신 LLM ‘통이치엔원 2.0’ 공개\n알리바바 클라우드가 복잡한 지침 이해, 광고문구 작성, 추론, 암기 등에서 성능이 향상된 최신 \nLLM ‘통이치엔원 2.0’을 공개\n알리바바 클라우드는 산업별로 특화된 생성 AI 모델을 공개하는 한편, 모델 개발과 애플리케이션 \n구축 절차를 간소화하는 올인원 AI 모델 구축 플랫폼도 출시\n알리바바의 통이치엔원 2.0, 주요 벤치마크 테스트에서 여타 LLM 능가\n중국의 알리바바 클라우드가 2023년 10월 31일 열린 연례 기술 컨퍼런스에서 최신 LLM ‘통이\n치엔원(Tongyi Qianwen) 2.0’을 공개\n알리바바 클라우드는 통이치엔원 2.0이 2023년 4월 출시된 1.0 버전보다 복잡한 지침 이해, \n광고문구 작성, 추론, 암기 등에서 성능이 향상되었다고 설명\n통이치엔원 2.0은 언어 이해 테스트(MMLU), 수학(GSM8k), 질문 답변(ARC-C)과 같은 벤치마크 \n테스트에서 라마(Llama-2-70B)와 GPT-3.5를 비롯한 주요 AI 모델을'),
 Document(page_content='한국전쟁이 발발하여 큰 피해를 입었습니다. 전쟁 후 남한은 빠른 경제 발전을 이루며 오늘날에 이르렀습니다.'),
 Document(metadata={'author': 'dj', 'creationDate': "D:20231208132838+09'00'", 'creator': 'Hwp 2018 10.0.0.13462', 'file_path': '/content/drive/MyDrive/재정정보경진대회/SPRI_AI_Brief_2023년12월호_F.pdf', 'format': 'PDF 1.4', 'keywords': '', 'modDate': "D:20231208132838+09'00'", 'page': 7, 'producer': 'Hancom PDF 1.3.0.542', 'source': '/content/drive/MyDrive/재정정보경진대회/SPRI_AI_Brief_2023년12월호_F.pdf', 'subject': '', 'title': '', 'total_pages': 23, 'trapped': ''}, page_content='FTC는 아마존 AI 비서 ‘알렉사(Alexa)’와 스마트홈 보안 기기 ‘링(Ring)’이 소비자의 사적 \n정보를 알고리즘 훈련에 사용하여 프라이버시를 침해한 혐의를 조사하는 등 법적 권한을 활용해 AI \n관련 불법 행위에 대처하고 있음\n* FTC는 2023년 5월 31일 동의를 받지 않고 어린이들의 음성과 위치 정보를 활용한 ‘알렉사’와 고객의 사적 영상에 대하여 \n직원에게 무제한 접근 권한을 부여한 ‘링’에 3,080만 달러(약 420억 원)의 과징금을 부과')]

 

cf)

https://wikidocs.net/231364