brunch

네이버 AI 1탄-3. 네이버 데이터 연결 실습

by Master Seo

<1> 랭체인-데이터 연결2- 코랩 (실습)

<2> 네이버 클라우드 참고 사이트




<1> 랭체인-데이터 연결2- 코랩 (실습)



1

슬라이드7.JPG


2

데이터 연결 ?

사용자가 질문하고, PDF 등 데이터에서 정보를 가져오려면 데이터 연결이 필요하다.



3

데이터 연결 순서 ?

미리 벡터 데이터 베이스에 저장해 놓는다.


4

상세 ?

슬라이드13.JPG



5

# 데이터 연결 실습 예제 - 코랩사용


# 데이터 연결을 위해서는 필요 라이브러리 설치

랭체인 설치, pdf 라이브러리 등 설치

문서 가져오기 - 다양한 곳에서 문서를 가져온다.

문서 변환(document transformers) - 입력 데이터를 청킹하여 분할 하거나 다시 결합 작업등 진행한다. 분할해야 응답을 잘한다.

문서 임베딩(embedding model) - 데이터를 벡터 형태로 변환한다.

벡터 데이터 베이스(벡터 저장소,vector stores) - 변환된 벡터를 저장/검색/관리한다.

검색기가 필요하다. (retrievers) - 정보검색 역할을 한다.




# 랭체인 설치, pdf 라이브러리 등 설치


!pip install pypdf

!pip install tiktoken

!pip install faiss-cpu

!pip install sentence-transformers



# t2.pdf 다운로드 - 호텔 예약 파일



# pdf파일은 코랩에 올려놓는다


코랩 왼쪽 폴더 클릭 > 업로드 클릭 > 파일 올리기 > 파일이름은 t2.pdf 로 하자.




9

# 문서 변환(document transformers)

입력 데이터를 청킹하여 분할 하거나 다시 결합 작업등 진행한다. 분할해야 응답을 잘한다.

아래 내용은 PDF 6 페이지중 5,000 글자를 읽어오라는 의미이다.




from langchain.document_loaders import PyPDFLoader

loader = PyPDFLoader("t2.pdf")

document = loader.load()

document[2].page_content[:5000]



30 숙박.png





11

# 문서 임베딩(embedding model) - 데이터를 벡터 형태로 변환한다.


임베딩이란 자연어처리에서 사람이 쓰는 자연어를 기계가 이해할 수 있도록 숫자형태인 vector로 바꾸는 과정 혹은 일련의 전체 과정을 의미합니다.

단어나 문장 각각을 벡터로 변환해 벡터 공간(Vector space)으로 끼워넣는다는 의미에서 임베딩이라고 합니다.



# 벡터 데이터 베이스(벡터 저장소,vector stores) - 변환된 벡터를 저장/검색/관리한다.




# 임베딩을 오픈 AI에서 제공하는 임베딩 모델 사용

# 벡터 데이터베이스로 파이스 사용


import os

os.environ["NCP_CLOVASTUDIO_API_KEY"] = "NTA0MjU2MWZNDJiYxqjRuCbOfkIy4Svs+M"

os.environ["NCP_APIGW_API_KEY"] = "OOJfdUkIfDJEhIsinKpG"

os.environ["NCP_CLOVASTUDIO_APP_ID"] = "7a1b56e593a7"

from langchain.vectorstores import FAISS

from langchain_community.embeddings import ClovaXEmbeddings

from langchain.text_splitter import RecursiveCharacterTextSplitter # Import the text splitter

embeddings = ClovaXEmbeddings(

model="clir-emb-dolphin",

)

# Split the document into smaller chunks

text_splitter = RecursiveCharacterTextSplitter(

chunk_size = 500, # Adjust the chunk size as needed

chunk_overlap = 0, # Adjust overlap as needed

)

docs = text_splitter.split_documents(document) # Split your document list

# Now create the FAISS vectorstore using the split documents

db = FAISS.from_documents(docs, embeddings)





13

# 검색기가 필요하다. (retrievers) - 정보검색 역할을 한다.




from langchain_community.chat_models import ChatClovaX


# Now instantiate the ChatClovaX class:

chat = ChatClovaX(model="HCX-003")


from langchain.chains import RetrievalQA

retriever = db.as_retriever()


qa = RetrievalQA.from_chain_type(


llm=chat,

chain_type="stuff",

retriever=retriever)


query = " 숙소 조식은 제공 되는가요 ?"


result = qa({"query": query})


print(result['result'])




40 조식.png







<2> 네이버 클라우드 참고 사이트


1

# 임베딩 도구 이용

https://guide.ncloud-docs.com/docs/clovastudio-dev-langchain#%EC%9E%84%EB%B2%A0%EB%94%A9%EB%8F%84%EA%B5%AC%EC%9D%B4%EC%9A%A9



2

# LangChain을 통해 CLOVA Studio의 임베딩(임베딩 v2) 도구를 이용하는 방법에 대한 자세한 설명은 공식 문서

https://python.langchain.com/docs/integrations/text_embedding/naver/



3

https://guide.ncloud-docs.com/docs/clovastudio-dev-langchain



4

https://guide.ncloud-docs.com/docs/clovastudio-playground01



5

# 네이버 임베딩 자료


https://guide.ncloud-docs.com/docs/clovastudio-dev-langchain#%EC%9E%84%EB%B2%A0%EB%94%A9%EB%8F%84%EA%B5%AC%EC%9D%B4%EC%9A%A9




감사합니다.

keyword
매거진의 이전글네이버 AI 1탄-2. 네이버 랭체인 연동-2025