Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
**/.retrieval-augmented-generation
**/.env
**/__pycache__
**/res
**/res
**/.venv
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,8 @@
# RAG-1stWeek
11월 7일 실습 및 과제를 위한 레포지토리입니다.

- 과제 1: 1.intro.ipynb, 2.embeddings.ipynb, 3.rag_data.ipynb, 4.rag_eval.ipynb, 5. ag_exercise.ipynb 각 파일을 실행하며 주석을 작성했습니다.

- 과제 2: **reports.md**에 metric에 대한 보고서를 작성했습니다.

- 과제 3: 추가적인 데이터셋에 대해 **rag_hw.ipynb**에 실습을 수행했습니다. 추가 데이터셋은 res 폴더에 **truthful_qa**라는 이름으로 저장되어 있습니다.
44 changes: 28 additions & 16 deletions embeddings.ipynb

Large diffs are not rendered by default.

Binary file added image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
42 changes: 24 additions & 18 deletions intro.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,43 @@
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"from dotenv import load_dotenv\n",
"import os\n",
"\n",
"#.env 파일의 내용을 환경 변수로 로드한다.\n",
"load_dotenv()\n",
"\n",
"OPENAI_API_KEY=os.getenv(\"OPENAI_API_KEY\")\n"
"#환경 변수에서 OPENAI_API_KEY값을 가져온다.\n",
"OPENAI_API_KEY=os.getenv(\"OPENAI_API_KEY\")\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"제가 실시간으로 날씨를 알려드릴 수는 없지만, 내일 서울의 예상 날씨는 대체로 맑은 날씨가 예상되며 최저 기온은 약 10도, 최고 기온은 약 19도 정도가 되겠습니다. 하지만 정확한 예보는 내일 아침에 다시 확인해보시는 것이 좋을 것 같습니다.\n"
"제가 실시간으로 정보를 제공하는 것은 불가능하지만, 일반적으로 내일 서울의 날씨는 안개 혹은 구름이 많을 수 있으며, 온도는 시간에 따라 변할 수 있습니다. 정확한 내일의 날씨 정보를 확인하려면 해당 지역의 기상 예보를 참고하시기 바랍니다.\n"
]
}
],
"source": [
"from openai import OpenAI\n",
"\n",
"#api 클라이언트를 생성한다.\n",
"client = OpenAI(api_key=OPENAI_API_KEY)\n",
"\n",
"prompt=\"내일 서울 날씨는 어때?\"\n",
"\n",
"#gpt 모델에게 프롬프트를 전송하고 응답을 생성한다.\n",
"completion = client.chat.completions.create(\n",
" model=\"gpt-3.5-turbo-0125\",\n",
" messages=[\n",
Expand All @@ -46,20 +51,21 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"저는 인공지능 챗봇으로 기상 정보를 제공하기 위해 프로그래밍되었습니다. 실시간으로 기상 정보를 업데이트하고 사용자의 질문에 대답하기 위해 미리 프로그래밍된 데이터베이스를 참조합니다. 그래서 사용자가 날씨에 관한 질문을 하면 제가 프로그래밍된 정보를 바탕으로 대답을 제공할 있습니다. 따라서 실시간 정보 업데이트가 되지 않는다고 걱정하지 않아도 됩니다.\n"
"전제적으로, 제가 사용하는 인공지능 기술은 실시간 데이터를 수집하고 분석하여 날씨 예보를 제공합니다. 저는 기상청이나 기상 데이터베이스와 연결되어 있어서 실시간으로 날씨 정보를 받아올 수 있습니다. 또한, 날씨 정보를 통해 과거의 데이터를 기반으로 통계적 분석을 통해 예보를 제공할 수도 있습니다. 따라서, 실시간으로 업데이트되는 날씨 정보를 확인하여 정확한 예측을 제공할 수 있습니다.\n"
]
}
],
"source": [
"curious_prompt = \"어떻게 네가 내일 날씨를 이야기해줄 수 있니? 너는 실시간 정보 업데이트가 안 되지 않니? 기상청 정보는 어떻게 알고 있는 거니?\"\n",
"\n",
"#gpt 모델에게 프롬프트를 전송하고 응답을 생성한다.\n",
"completion = client.chat.completions.create(\n",
" model=\"gpt-3.5-turbo-0125\",\n",
" messages=[\n",
Expand All @@ -72,7 +78,7 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": 6,
"metadata": {},
"outputs": [
{
Expand Down Expand Up @@ -102,8 +108,10 @@
"- (경상권, 28일) 경북동해안: 5~10mm/ 대구.경북내륙, 부산.울산.경남: 5mm 미만\n",
"- (제주도, 29일) 제주도: 5~40mm\"\"\"\n",
"\n",
"#기상청 단기예보를 포함한 프롬프트를 생성한다.\n",
"prompt = \"내일 날씨는 어때?\" + \"\\n\\n\" + weather_info\n",
"\n",
"#gpt 모델에게 프롬프트를 전송하고 응답을 생성한다.\n",
"completion = client.chat.completions.create(\n",
" model=\"gpt-3.5-turbo-0125\",\n",
" messages=[\n",
Expand All @@ -117,7 +125,7 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": 7,
"metadata": {},
"outputs": [
{
Expand All @@ -130,6 +138,7 @@
}
],
"source": [
"# 두 텍스트의 공통 단어 개수를 계산한다.\n",
"def count_common_words(text1, text2):\n",
" words1 = text1.split()\n",
" words2 = text2.split()\n",
Expand All @@ -138,32 +147,29 @@
"\n",
"question = '한국의 전통 음식에 대해 무엇을 알고 계신가요?'\n",
"\n",
"#참조 텍스트 리스트\n",
"ref_texts = [\n",
" '한국의 전통 음식은 다양한 재료와 조리법으로 유명합니다. 김치, 불고기, 비빔밥 등이 대표적인 예시입니다.',\n",
" '한국의 음식 문화는 건강에 좋은 재료를 사용하는 것으로 알려져 있습니다. 발효 식품인 김치가 대표적입니다.',\n",
" '한국의 역사와 문화는 매우 흥미롭습니다. 고궁과 한복, 그리고 태권도 등이 유명한 문화 요소입니다.'\n",
"]\n",
"\n",
"#참조 텍스트와 질문의 공통 단어 수를 계산한다.\n",
"common_word_counts = [count_common_words(question, ref_text) for ref_text in ref_texts]\n",
"\n",
"#가장 유사한 텍스트의 인덱스를 찾는다.\n",
"most_similar_index = common_word_counts.index(max(common_word_counts))\n",
"\n",
"print(f\"가장 유사한 텍스트 번호: {most_similar_index+1}\")\n",
"print(f\"겹치는 단어 수 : {common_word_counts[most_similar_index]}\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": ".retrieval-augmented-generation",
"display_name": "Python (myvenv)",
"language": "python",
"name": "python3"
"name": "myvenv"
},
"language_info": {
"codemirror_mode": {
Expand All @@ -175,7 +181,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.4"
"version": "3.12.6"
}
},
"nbformat": 4,
Expand Down
Loading