<code>main_document_text = """ Morning Routine (5:30 AM - 9:00 AM) ✅ Wake Up Early - Aim for 6-8 hours of sleep to feel well-rested. ✅ Hydrate First - Drink a glass of water to rehydrate your body. ✅ Morning Stretch or Light Exercise - Do 5-10 minutes of stretching or a short workout to activate your body. ✅ Mindfulness or Meditation - Spend 5-10 minutes practicing mindfulness or deep breathing. ✅ Healthy Breakfast - Eat a balanced meal with protein, healthy fats, and fiber. ✅ Plan Your Day - Set goals, review your schedule, and prioritize tasks. ... """</code>
fungsi penolong: menyelaraskan saluran paip RAG
<code># **Imports** import os import json import openai import numpy as np from scipy.spatial.distance import cosine from google.colab import userdata # Set up OpenAI API key os.environ["OPENAI_API_KEY"] = userdata.get('AiTeam')</code>
<code>def query_chatgpt(prompt, model="gpt-4o", response_format=openai.NOT_GIVEN): try: response = client.chat.completions.create( model=model, messages=[{"role": "user", "content": prompt}], temperature=0.0 , # Adjust for more or less creativity response_format=response_format ) return response.choices[0].message.content.strip() except Exception as e: return f"Error: {e}"</code>
<code>def get_embedding(text, model="text-embedding-3-large"): #"text-embedding-ada-002" """Fetches the embedding for a given text using OpenAI's API.""" response = client.embeddings.create( input=[text], model=model ) return response.data[0].embedding</code>
<code>def compute_similarity_metrics(embed1, embed2): """Computes different similarity/distance metrics between two embeddings.""" cosine_sim = 1- cosine(embed1, embed2) # Cosine similarity return cosine_sim</code>
<code>def fetch_similar_docs(query, docs, threshold = .55, top=1): query_em = get_embedding(query) data = [] for d in docs: # Compute and print similarity metrics similarity_results = compute_similarity_metrics(d["embedding"], query_em) if(similarity_results >= threshold): data.append({"id":d["id"], "ref_doc":d.get("ref_doc", ""), "score":similarity_results}) # Sorting by value (second element in each tuple) sorted_data = sorted(data, key=lambda x: x["score"], reverse=True) # Ascending order sorted_data = sorted_data[:min(top, len(sorted_data))] return sorted_data</code>
Teknik lanjutan untuk RAG yang dipertingkatkan
<code>"""# **Testing Vanilla RAG**""" query = "what should I do to stay healthy and productive?" r = fetch_similar_docs(query, docs) print("query = ", query) print("documents = ", r) query = "what are the best practices to stay healthy and productive ?" r = fetch_similar_docs(query, docs) print("query = ", query) print("documents = ", r)</code>
1. Menjana Soalan Lazim
2. Mewujudkan gambaran keseluruhan
<code>def generate_faq(text): prompt = f''' given the following text: """{text}""" Ask relevant simple atomic questions ONLY (don't answer them) to cover all subjects covered by the text. Return the result as a json list example [q1, q2, q3...] ''' return query_chatgpt(prompt, response_format={ "type": "json_object" })</code>
3. Penguraian pertanyaan
<code>def generate_overview(text): prompt = f''' given the following text: """{text}""" Generate an abstract for it that tells in maximum 3 lines what is it about and use high level terms that will capture the main points, Use terms and words that will be most likely used by average person. ''' return query_chatgpt(prompt)</code>
<code>main_document_text = """ Morning Routine (5:30 AM - 9:00 AM) ✅ Wake Up Early - Aim for 6-8 hours of sleep to feel well-rested. ✅ Hydrate First - Drink a glass of water to rehydrate your body. ✅ Morning Stretch or Light Exercise - Do 5-10 minutes of stretching or a short workout to activate your body. ✅ Mindfulness or Meditation - Spend 5-10 minutes practicing mindfulness or deep breathing. ✅ Healthy Breakfast - Eat a balanced meal with protein, healthy fats, and fiber. ✅ Plan Your Day - Set goals, review your schedule, and prioritize tasks. ... """</code>
Mengembalikan semula pertanyaan awal dengan peningkatan ini menunjukkan peningkatan yang ketara. Penguraian pertanyaan menjana pelbagai sub-Queries, yang membawa kepada pengambilan semula yang berjaya dari kedua-dua Soalan Lazim dan dokumen asal.
<code># **Imports** import os import json import openai import numpy as np from scipy.spatial.distance import cosine from google.colab import userdata # Set up OpenAI API key os.environ["OPENAI_API_KEY"] = userdata.get('AiTeam')</code>
Contoh Output FAQ:
<code>def query_chatgpt(prompt, model="gpt-4o", response_format=openai.NOT_GIVEN): try: response = client.chat.completions.create( model=model, messages=[{"role": "user", "content": prompt}], temperature=0.0 , # Adjust for more or less creativity response_format=response_format ) return response.choices[0].message.content.strip() except Exception as e: return f"Error: {e}"</code>
Semasa pra-proses (menjana Soalan Lazim, Gambaran Keseluruhan, dan Embeddings) menambah kos pendahuluan, ia adalah kos satu kali setiap dokumen. Ini mengimbangi ketidakcekapan sistem RAG yang tidak dioptimumkan: pengguna kecewa dan peningkatan kos pertanyaan daripada mendapatkan maklumat yang tidak relevan. Untuk sistem volum tinggi, pra-proses adalah pelaburan yang berbaloi.
Menggabungkan Preprocessing Document (FAQs dan Gambaran Keseluruhan) dengan penguraian pertanyaan mewujudkan sistem RAG yang lebih pintar yang mengimbangi ketepatan dan keberkesanan kos. Ini meningkatkan kualiti pengambilan, mengurangkan hasil yang tidak relevan, dan meningkatkan pengalaman pengguna. Penyelidikan masa depan dapat meneroka pengoptimuman selanjutnya seperti ambang dinamik dan pembelajaran tetulang untuk penghalusan pertanyaan.
Atas ialah kandungan terperinci Meningkatkan Rag: Beyond Vanilla Pendekatan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!