พื้นที่เก็บข้อมูลนี้มีโครงการที่แสดงให้เห็นถึงวิธีการใช้กรอบการดึง (RAG) การดึง (RAG) เฟรมเวิร์กกับโมเดล GPT-4O ของ OpenAI และฐานข้อมูลเวกเตอร์ PINECONE เพื่อสอบถามชุดข้อมูล CSV โครงการเกี่ยวข้องกับการสร้างการฝังเวกเตอร์จากข้อมูลในไฟล์ CSV จัดเก็บการฝังตัวในฐานข้อมูล Pinecone จากนั้นสอบถามข้อมูล Embeddings เวกเตอร์โดยใช้การสืบค้นภาษาธรรมชาติ
สารบัญ
การแนะนำ
ข้อกำหนดเบื้องต้น
แพลตฟอร์มที่ทดสอบและแพ็คเกจ
การใช้งาน
การกลืนข้อมูลและการสร้าง embeddings
การสอบถามข้อมูล
มันทำงานอย่างไร
ใบอนุญาต
โครงการนี้แสดงให้เห็นถึงการใช้เทคนิคการประมวลผลภาษาธรรมชาติเพื่อสอบถามข้อมูลที่เก็บไว้ในไฟล์ CSV ด้วยการใช้ประโยชน์จากโมเดล GPT-4 ของ OpenAI และฐานข้อมูลเวกเตอร์ของ Pinecone เราสามารถสร้างการฝังข้อมูลสำหรับข้อมูลและใช้การฝังตัวเหล่านี้เพื่อดึงการตอบสนองที่แม่นยำสำหรับการสอบถามผู้ใช้
ก่อนที่คุณจะเริ่มตรวจสอบให้แน่ใจว่าคุณมีสิ่งต่อไปนี้:
การรวม API : สำหรับการรวมเข้ากับ OpenAI และ Pinecone คุณต้องได้รับและกำหนดค่าคีย์ API ที่เกี่ยวข้องโฮสต์ (pinecone) ข้อมูลสำหรับแพลตฟอร์มเหล่านี้ ตั้งค่าคีย์ OpenAI และ PINECONE API ของคุณและโฮสต์ PINECONE เป็นตัวแปรสภาพแวดล้อมใน Linux ใช้คำสั่ง Linux ต่อไปนี้เพื่อส่งออกตัวแปรเหล่านี้:
ส่งออก openai_api_key = 'your-openai-api-key'
ส่งออก pinecone_api_key = 'ของคุณ-pinecone-api-key'
ส่งออก pinecone_host = 'ของคุณ-โพติ-โฮสต์'
OpenAI API: OpenAI Model "Text-Embedding-ADA-002" และ "GPT-4O" ใช้สำหรับการสร้างการฝังและการสนับสนุน LLM ตรวจสอบให้แน่ใจว่าคุณมีบัญชี OpenAI พร้อมคีย์ API ที่ถูกต้อง คุณสามารถรับคีย์ API ของคุณได้จากแพลตฟอร์ม OpenAI (https://platform.openai.com/) และจัดการพวกเขา (https://platform.openai.com/organization/api-keys) นอกจากนี้ตรวจสอบให้แน่ใจว่าบัญชีของคุณมีโควต้าการใช้งานที่เพียงพอตามตัวอย่างนี้ต้องใช้บัญชี OpenAI ที่ชำระเงิน
สภาพแวดล้อม Pinecone (บัญชีฟรี Pinecone ใช้ https://www.pinecone.io/): 1) ดัชนี Pinecone ใช้ 2) มิติ: 1536 3) ประเภทโฮสต์: Serverless
Centos Linux Release 8.5.2111 สร้างสภาพแวดล้อมเสมือนจริง (เป็นทางเลือก แต่แนะนำ) เพื่อแยกการพึ่งพาโครงการ
Python 3.8.8
แพนด้า 2.0.3
Openai 1.30.3
Pinecone 4.0.0
numpy 1.24.4
Argparse 1.1
การกลืนข้อมูลและการสร้าง embeddings
csv_path = "your_csv_file_path" [create-chunks-embeddings-store-vectordb-csv-dataset.py]
pinecone_index_name = "your_pinecone_index_name" [create-chunks-embeddings-store-vectordb-csv-dataset.py]
index_name = "your_pinecone_index_name" [query-prompt-for- vector-embeddings.py]
แก้ไขชื่อคอลัมน์ในฟังก์ชัน read_csv_data เพื่อให้ตรงกับคอลัมน์ในไฟล์ CSV ของคุณ ดู การปรับแต่งสำหรับส่วนไฟล์ CSV ของคุณ สำหรับรายละเอียด
คุณสามารถใช้โมเดล OpenAI LLM ตามความต้องการของคุณ:
model = "GPT-4O", # คุณสามารถใช้ GPT-4 หรือ GPT-3.5-turbo หรือรุ่น OpenAI LLM อื่น ๆ [QUERY-PROMPT-for-vector-embeddings.py]
เรียกใช้สคริปต์เพื่ออ่านข้อมูลสร้าง embeddings และจัดเก็บไว้ใน pinecon
#python create-chunks-embeddings-store-vectordb-csv-dataset.py
การสอบถามข้อมูล
#python Query-Prompt-for-vector-embeddings.py "คำถามของคุณที่นี่"
ตัวอย่าง: Python Query-Prompt-for-vector-embeddings.py "บอกฉันเกี่ยวกับพล็อตของภาพยนตร์ xyz"
ป้อนแบบสอบถามถัดไปของคุณ (หรือพิมพ์ 'ออก' เพื่อเลิก): ปีไหนที่ภาพยนตร์เรื่องนี้เปิดตัว?
chunking ข้อมูล CSV สร้าง embeddings เวกเตอร์และจัดเก็บ embeddings ในฐานข้อมูล pinecone
สคริปต์ "create-chunks-embeddings-store-vectordb-csv-dataset.py" อ่านไฟล์ CSV และรวมคอลัมน์ที่เกี่ยวข้องลงในสตริงข้อความเดียวสำหรับแต่ละแถว สตริงข้อความนี้มีรายละเอียดของคอลัมน์สำหรับแต่ละแถว - แต่ละแถวมีข้อมูลที่แตกต่างกัน (ตัวอย่างเช่นข้อมูลสำหรับภาพยนตร์) ข้อความรวมสำหรับแต่ละแถวจะถูกใช้เพื่อสร้าง embeddings โดยใช้ API ของ OpenAI เวกเตอร์ฝังตัวถูกเก็บไว้ในดัชนี pinecone
ใช้ประโยชน์จาก GPT-4 LLM ของ OpenAi
โครงการใช้ประโยชน์จากโมเดลภาษาขนาดใหญ่ GPT-4 ของ OpenAi (LLM) ในสองวิธีหลัก:
การสร้าง EMBEDDINGS: ข้อมูลข้อความจากแต่ละแถวของไฟล์ CSV ถูกใช้เป็นอินพุตไปยังโมเดลการฝังของ OpenAI (การฝังตัวข้อความ -ADA-002) โมเดลนี้แปลงข้อความเป็นเวกเตอร์มิติสูงที่รวบรวมความหมายเชิงความหมายของข้อความ การฝังตัวเหล่านี้จะถูกเก็บไว้ในฐานข้อมูลเวกเตอร์ของ Pinecone เพื่อการดึงที่มีประสิทธิภาพ
การสืบค้นภาษาธรรมชาติ: เมื่อผู้ใช้ส่งแบบสอบถามสคริปต์จะสร้างการฝังตัวสำหรับข้อความสอบถามโดยใช้โมเดลการฝังเดียวกัน การฝังแบบสอบถามนี้จะถูกใช้เพื่อค้นหาฐานข้อมูลเวกเตอร์ Pinecone สำหรับชิ้นข้อความที่คล้ายคลึงกันมากที่สุด (เช่นแถวจากไฟล์ CSV) ชิ้นข้อความที่เกี่ยวข้องจะถูกดึงและส่งผ่านไปยังโมเดล GPT-4 ของ OpenAI เพื่อสร้างการตอบสนองที่ครอบคลุมและแม่นยำตามบริบทต่อการสืบค้นของผู้ใช้
การรวมบริบทสำหรับการตอบสนองที่เพิ่มขึ้น
เพื่อให้แน่ใจว่าการตอบสนองนั้นถูกต้องและเกี่ยวข้องสคริปต์จะรักษาบริบทของการสืบค้นและการตอบกลับก่อนหน้านี้ บริบทนี้รวมกับชิ้นข้อความที่ดึงมาเพื่อให้มุมมองที่ครอบคลุมของข้อมูล วิธีการนี้ช่วยเพิ่มความสามารถของโมเดลในการสร้างคำตอบโดยละเอียดและแม่นยำซึ่งมีพื้นฐานอยู่ในข้อมูลที่ให้ไว้ในไฟล์ CSV
ปรับแต่งไฟล์ CSV ของคุณ
เพื่อให้แน่ใจว่าสคริปต์ทำงานได้อย่างถูกต้องกับไฟล์ CSV ของคุณให้อัปเดตคอลัมน์ "create-chunks-embeddings-store-vectordb-csv-dataset.py" เพื่อให้ตรงกับคอลัมน์ในไฟล์ CSV ของคุณ นี่คือตัวอย่างของวิธีที่คุณสามารถปรับแต่งฟังก์ชั่น:
#users ควรแทนที่คอลัมน์ด้วยรายการชื่อคอลัมน์ที่ต้องการใช้ - ตัวอย่างด้านล่าง
คอลัมน์ = ["อันดับ", "ผู้กำกับ", "ประเภท", "พล็อต", "นักแสดง", "เรตติ้ง"] # แทนที่คอลัมน์ด้วยชื่อคอลัมน์ของไฟล์ CSV ของคุณ
โครงการนี้ได้รับใบอนุญาตภายใต้ใบอนุญาต Apache 2.0 ดูไฟล์ใบอนุญาตสำหรับรายละเอียด