Το Retrieval Augmented Generation (RAG) σάς επιτρέπει να παρέχετε ένα μοντέλο μεγάλης γλώσσας (LLM) με πρόσβαση σε δεδομένα από εξωτερικές πηγές γνώσης, όπως αποθετήρια, βάσεις δεδομένων και API, χωρίς να χρειάζεται να το βελτιστοποιήσετε. Όταν χρησιμοποιείται η γενετική τεχνητή νοημοσύνη για την απάντηση ερωτήσεων, το RAG επιτρέπει στους LLM να απαντούν σε ερωτήσεις με τις πιο σχετικές, ενημερωμένες πληροφορίες και προαιρετικά να αναφέρουν τις πηγές δεδομένων τους για επαλήθευση.
Μια τυπική λύση RAG για ανάκτηση γνώσης από έγγραφα χρησιμοποιεί ένα μοντέλο ενσωματώσεων για να μετατρέψει τα δεδομένα από τις πηγές δεδομένων σε ενσωματώσεις και αποθηκεύει αυτές τις ενσωματώσεις σε μια διανυσματική βάση δεδομένων. Όταν ένας χρήστης κάνει μια ερώτηση, πραγματοποιεί αναζήτηση στη διανυσματική βάση δεδομένων και ανακτά έγγραφα που μοιάζουν περισσότερο με το ερώτημα του χρήστη. Στη συνέχεια, συνδυάζει τα ανακτημένα έγγραφα και το ερώτημα του χρήστη σε μια επαυξημένη προτροπή που αποστέλλεται στο LLM για δημιουργία κειμένου. Υπάρχουν δύο μοντέλα σε αυτήν την υλοποίηση: το μοντέλο ενσωματώσεων και το LLM που δημιουργεί την τελική απόκριση.
Σε αυτήν την ανάρτηση, δείχνουμε πώς να το χρησιμοποιήσετε Στούντιο Amazon SageMaker για να δημιουργήσετε μια λύση απάντησης ερωτήσεων RAG.
Χρήση σημειωματάριων για απάντηση ερωτήσεων βάσει RAG
Η υλοποίηση του RAG συνήθως συνεπάγεται πειραματισμό με διάφορα μοντέλα ενσωμάτωσης, διανυσματικές βάσεις δεδομένων, μοντέλα δημιουργίας κειμένου και προτροπές, ενώ επίσης αποσφαλμάτωση του κώδικά σας μέχρι να επιτύχετε ένα λειτουργικό πρωτότυπο. Amazon Sage Maker προσφέρει διαχειριζόμενους φορητούς υπολογιστές Jupyter εξοπλισμένους με στιγμιότυπα GPU, δίνοντάς σας τη δυνατότητα να πειραματιστείτε γρήγορα κατά τη διάρκεια αυτής της αρχικής φάσης χωρίς να δημιουργήσετε πρόσθετη υποδομή. Υπάρχουν δύο επιλογές για τη χρήση φορητών υπολογιστών στο SageMaker. Η πρώτη επιλογή είναι η γρήγορη εκκίνηση φορητούς υπολογιστές διατίθεται μέσω του SageMaker Studio. Στο SageMaker Studio, το ολοκληρωμένο περιβάλλον ανάπτυξης (IDE) που έχει δημιουργηθεί ειδικά για ML, μπορείτε να εκκινήσετε σημειωματάρια που εκτελούνται σε διαφορετικούς τύπους παρουσιών και με διαφορετικές διαμορφώσεις, να συνεργάζεστε με συναδέλφους και να έχετε πρόσβαση σε πρόσθετες ειδικές λειτουργίες για μηχανική μάθηση (ML). Η δεύτερη επιλογή χρησιμοποιεί α Παρουσίαση σημειωματάριου SageMaker, η οποία είναι μια πλήρως διαχειριζόμενη παρουσία υπολογισμού ML που εκτελεί την εφαρμογή Jupyter Notebook.
Σε αυτήν την ανάρτηση, παρουσιάζουμε μια λύση RAG που αυξάνει τις γνώσεις του μοντέλου με πρόσθετα δεδομένα από εξωτερικές πηγές γνώσης για να παρέχει πιο ακριβείς απαντήσεις ειδικά για έναν προσαρμοσμένο τομέα. Χρησιμοποιούμε ένα μόνο σημειωματάριο SageMaker Studio που εκτελείται σε ένα ml.g5.2xlarge
παράδειγμα (1 GPU A10G) και Llama 2 7b chat hf, η τελειοποιημένη έκδοση του Llama 2 7b, η οποία είναι βελτιστοποιημένη για περιπτώσεις χρήσης διαλόγου από το Hugging Face Hub. Χρησιμοποιούμε δύο αναρτήσεις ιστολογίου AWS Media & Entertainment ως δείγμα εξωτερικών δεδομένων, τις οποίες μετατρέπουμε σε ενσωματώσεις με το BAAI/bge-small-en-v1.5 ενσωματώσεις. Αποθηκεύουμε τις ενσωματώσεις κουκουνάρι, μια βάση δεδομένων που βασίζεται σε διανύσματα που προσφέρει αναζήτηση υψηλής απόδοσης και αντιστοίχιση ομοιότητας. Συζητάμε επίσης τον τρόπο μετάβασης από τον πειραματισμό στο σημειωματάριο στην ανάπτυξη των μοντέλων σας στα τελικά σημεία του SageMaker για συμπέρασμα σε πραγματικό χρόνο όταν ολοκληρώσετε τη δημιουργία πρωτοτύπων. Η ίδια προσέγγιση μπορεί να χρησιμοποιηθεί με διαφορετικά μοντέλα και διανυσματικές βάσεις δεδομένων.
Επισκόπηση λύσεων
Το παρακάτω διάγραμμα απεικονίζει την αρχιτεκτονική λύσεων.
Η εφαρμογή της λύσης αποτελείται από δύο βήματα υψηλού επιπέδου: ανάπτυξη της λύσης χρησιμοποιώντας φορητούς υπολογιστές SageMaker Studio και ανάπτυξη μοντέλων για συμπέρασμα.
Αναπτύξτε τη λύση χρησιμοποιώντας φορητούς υπολογιστές SageMaker Studio
Ολοκληρώστε τα παρακάτω βήματα για να ξεκινήσετε την ανάπτυξη της λύσης:
- Τοποθετήστε το μοντέλο συνομιλίας Llama-2 7b από το Hugging Face Hub στο σημειωματάριο.
- Δημιουργήστε ένα PromptTemplate με LangChain και χρησιμοποιήστε το για να δημιουργήσετε προτροπές για την περίπτωση χρήσης σας.
- Για 1–2 παραδείγματα προτροπών, προσθέστε σχετικό στατικό κείμενο από εξωτερικά έγγραφα ως πλαίσιο προτροπής και αξιολογήστε εάν βελτιώνεται η ποιότητα των απαντήσεων.
- Υποθέτοντας ότι η ποιότητα βελτιώνεται, εφαρμόστε τη ροή εργασιών απάντησης στην ερώτηση RAG:
- Συγκεντρώστε τα εξωτερικά έγγραφα που μπορούν να βοηθήσουν το μοντέλο να απαντήσει καλύτερα στις ερωτήσεις στην περίπτωση χρήσης σας.
- Φορτώστε το μοντέλο ενσωματώσεων BGE και χρησιμοποιήστε το για να δημιουργήσετε ενσωματώσεις αυτών των εγγράφων.
- Αποθηκεύστε αυτές τις ενσωματώσεις σε ένα ευρετήριο Pinecone.
- Όταν ένας χρήστης κάνει μια ερώτηση, πραγματοποιήστε μια αναζήτηση ομοιότητας στο Pinecone και προσθέστε το περιεχόμενο από τα πιο παρόμοια έγγραφα στο περιβάλλον του μηνύματος.
Αναπτύξτε τα μοντέλα στο SageMaker για συμπέρασμα σε κλίμακα
Όταν πετύχετε τους στόχους απόδοσής σας, μπορείτε να αναπτύξετε τα μοντέλα στο SageMaker για χρήση από εφαρμογές τεχνητής νοημοσύνης:
- Αναπτύξτε το μοντέλο συνομιλίας Llama-2 7b σε ένα τελικό σημείο του SageMaker σε πραγματικό χρόνο.
- Αναπτύξτε το BAAI/bge-small-en-v1.5 μοντέλο ενσωματώσεων σε τελικό σημείο SageMaker σε πραγματικό χρόνο.
- Χρησιμοποιήστε τα αναπτυγμένα μοντέλα στην ερώτησή σας απαντώντας σε γενετικές εφαρμογές τεχνητής νοημοσύνης.
Στις επόμενες ενότητες, σας καθοδηγούμε στα βήματα της εφαρμογής αυτής της λύσης σε φορητούς υπολογιστές SageMaker Studio.
Προϋποθέσεις
Για να ακολουθήσετε τα βήματα σε αυτήν την ανάρτηση, πρέπει να έχετε έναν λογαριασμό AWS και ένα Διαχείριση ταυτότητας και πρόσβασης AWS ρόλος (IAM) με δικαιώματα δημιουργίας και πρόσβασης στους πόρους λύσης. Εάν είστε νέος στο AWS, δείτε Δημιουργήστε έναν αυτόνομο λογαριασμό AWS.
Για να χρησιμοποιήσετε σημειωματάρια SageMaker Studio στον λογαριασμό σας AWS, χρειάζεστε ένα Τομέας SageMaker με ένα προφίλ χρήστη που έχει δικαιώματα για την εκκίνηση της εφαρμογής SageMaker Studio. Εάν είστε νέοι στο SageMaker Studio, το Ρύθμιση Quick Studio είναι ο πιο γρήγορος τρόπος για να ξεκινήσετε. Με ένα μόνο κλικ, το SageMaker παρέχει στον τομέα SageMaker προεπιλεγμένες προεπιλογές, συμπεριλαμβανομένης της ρύθμισης του προφίλ χρήστη, του ρόλου IAM, του ελέγχου ταυτότητας IAM και της δημόσιας πρόσβασης στο διαδίκτυο. Το σημειωματάριο για αυτήν τη θέση προϋποθέτει ένα ml.g5.2xlarge
τύπος περίπτωσης. Για να ελέγξετε ή να αυξήσετε το όριο σας, ανοίξτε την κονσόλα AWS Service Quotas, επιλέξτε Υπηρεσίες AWS στο παράθυρο πλοήγησης, επιλέξτε Amazon Sage Makerκαι ανατρέξτε στην τιμή για τις εφαρμογές Studio KernelGateway που εκτελούνται ml.g5.2xlarge
περιπτώσεις.
Αφού επιβεβαιώσετε το όριο του ορίου σας, πρέπει να ολοκληρώσετε τις εξαρτήσεις για να χρησιμοποιήσετε τη συνομιλία Llama 2 7b.
Η συνομιλία Llama 2 7b είναι διαθέσιμη κάτω από το Άδεια Llama 2. Για να αποκτήσετε πρόσβαση στο Llama 2 στο Hugging Face, πρέπει πρώτα να ολοκληρώσετε μερικά βήματα:
- Δημιουργήστε έναν λογαριασμό Hugging Face εάν δεν έχετε ήδη.
- Συμπληρώστε τη φόρμα "Αίτημα πρόσβασης στην επόμενη έκδοση του Llama" στο Meta .
- Ζητήστε πρόσβαση σε Συνομιλία Llama 2 7b στο πρόσωπο που αγκαλιάζει.
Αφού σας παραχωρηθεί πρόσβαση, μπορείτε να δημιουργήσετε ένα νέο διακριτικό πρόσβασης στα μοντέλα πρόσβασης. Για να δημιουργήσετε ένα διακριτικό πρόσβασης, μεταβείτε στο ρυθμίσεις σελίδα στον ιστότοπο Hugging Face.
Πρέπει να έχετε λογαριασμό στο Pinecone για να το χρησιμοποιήσετε ως διανυσματική βάση δεδομένων. Το Pinecone είναι διαθέσιμο στο AWS μέσω του AWS Marketplace. Ο ιστότοπος Pinecone προσφέρει επίσης την επιλογή δημιουργίας α δωρεάν λογαριασμός που συνοδεύεται από δικαιώματα για τη δημιουργία ενός ενιαίου ευρετηρίου, το οποίο είναι αρκετό για τους σκοπούς αυτής της ανάρτησης. Για να ανακτήσετε τα κλειδιά Pinecone, ανοίξτε το Κονσόλα κουκουνάρι Και επιλέξτε Κλειδιά API.
Ρυθμίστε το σημειωματάριο και το περιβάλλον
Για να ακολουθήσετε τον κώδικα σε αυτήν την ανάρτηση, ανοίξτε το SageMaker Studio και κλωνοποιήστε τα παρακάτω Αποθετήριο GitHub. Στη συνέχεια, ανοίξτε το σημειωματάριο studio-local-gen-ai/rag/RAG-with-Llama-2-on-Studio.ipynb και επιλέξτε την PyTorch 2.0.0 Python 3.10 GPU Optimized εικόνα, Python 3 και ml.g5.2xlarge
ως τύπος περιστατικού. Εάν αυτή είναι η πρώτη φορά που χρησιμοποιείτε φορητούς υπολογιστές SageMaker Studio, ανατρέξτε στο Δημιουργήστε ή ανοίξτε ένα σημειωματάριο Amazon SageMaker Studio.
Για να ρυθμίσετε το περιβάλλον ανάπτυξης, πρέπει να εγκαταστήσετε τις απαραίτητες βιβλιοθήκες Python, όπως φαίνεται στον ακόλουθο κώδικα:
%%writefile requirements.txt
sagemaker>=2.175.0
transformers==4.33.0
accelerate==0.21.0
datasets==2.13.0
langchain==0.0.297
pypdf>=3.16.3
pinecone-client
sentence_transformers
safetensors>=0.3.3
!pip install -U -r requirements.txt
Τοποθετήστε το προεκπαιδευμένο μοντέλο και το tokenizer
Αφού εισαγάγετε τις απαιτούμενες βιβλιοθήκες, μπορείτε να φορτώσετε τις Συνομιλία Llama-2 7b μοντέλο μαζί με τα αντίστοιχα tokenizers από το Hugging Face. Αυτά τα φορτωμένα τεχνουργήματα μοντέλων αποθηκεύονται στον τοπικό κατάλογο του SageMaker Studio. Αυτό σας δίνει τη δυνατότητα να τα φορτώνετε ξανά γρήγορα στη μνήμη όποτε χρειάζεται να συνεχίσετε την εργασία σας σε διαφορετική στιγμή.
import torch from transformers import ( AutoTokenizer, LlamaTokenizer, LlamaForCausalLM, GenerationConfig, AutoModelForCausalLM
)
import transformers tg_model_id = "meta-llama/Llama-2-7b-chat-hf" #the model id in Hugging Face
tg_model_path = f"./tg_model/{tg_model_id}" #the local directory where the model will be saved tg_model = AutoModelForCausalLM.from_pretrained(tg_model_id, token=hf_access_token,do_sample=True, use_safetensors=True, device_map="auto", torch_dtype=torch.float16
tg_tokenizer = AutoTokenizer.from_pretrained(tg_model_id, token=hf_access_token) tg_model.save_pretrained(save_directory=tg_model_path, from_pt=True)
tg_tokenizer.save_pretrained(save_directory=tg_model_path, from_pt=True)
Κάντε μια ερώτηση που απαιτεί ενημερωμένες πληροφορίες
Τώρα μπορείτε να αρχίσετε να χρησιμοποιείτε το μοντέλο και να κάνετε ερωτήσεις. Τα μοντέλα συνομιλίας Llama-2 αναμένουν ότι η προτροπή θα συμμορφώνεται με την ακόλουθη μορφή:
<s>[INST] <<SYS>>
system_prompt
<<SYS>>
{{ user_message }} [/INST]
Μπορείτε να χρησιμοποιήσετε το PromptTemplate από το LangChain για να δημιουργήσετε μια συνταγή με βάση τη μορφή προτροπής, ώστε να μπορείτε να δημιουργήσετε εύκολα προτροπές στο εξής:
from langchain import PromptTemplate template = """<s>[INST] <<SYS>>nYou are an assistant for question-answering tasks. You are helpful and friendly. Use the following pieces of retrieved context to answer the query. If you don't know the answer, you just say I don't know. Use three sentences maximum and keep the answer concise.
<<SYS>>n
{context}n
{question} [/INST] """
prompt_template = PromptTemplate( template=template, input_variables=['context','question'] )
Ας κάνουμε στο μοντέλο μια ερώτηση που χρειάζεται πρόσφατες πληροφορίες από το 2023. Μπορείτε να χρησιμοποιήσετε το LangChain και συγκεκριμένα το LLMCchain τύπος αλυσίδας και περάστε ως παραμέτρους το LLM, το πρότυπο προτροπής που δημιουργήσατε νωρίτερα και την ερώτηση:
question = "When can I visit the AWS M&E Customer Experience Center in New York City?" tg_tokenizer.add_special_tokens( {"pad_token": "[PAD]"} )
tg_tokenizer.padding_side = "left" tg_pipe = transformers.pipeline(task='text-generation', model=tg_model, tokenizer=tg_tokenizer, num_return_sequences=1, eos_token_id=tg_tokenizer.eos_token_id, pad_token_id=tg_tokenizer.eos_token_id, max_new_tokens=400, temperature=0.7) from langchain.chains import LLMChain
from langchain.llms import HuggingFacePipeline llm=HuggingFacePipeline(pipeline=tg_pipe, model_kwargs={'temperature':0.7})
llm_chain = LLMChain(llm=llm, prompt=prompt_template)
no_context_response = llm_chain.predict(context="", question=question)
print(no_context_response)
Λαμβάνουμε την παρακάτω παραγόμενη απάντηση:
Ευχαριστούμε που απευθυνθήκατε! Το Κέντρο Εμπειρίας Πελατών AWS M&E στη Νέα Υόρκη είναι προς το παρόν κλειστό για επισκέψεις λόγω της πανδημίας COVID-19. Ωστόσο, μπορείτε να ελέγξετε τον επίσημο ιστότοπο ή τους λογαριασμούς των μέσων κοινωνικής δικτύωσης για τυχόν ενημερώσεις σχετικά με το πότε θα ανοίξει ξανά το κέντρο. Στο μεταξύ, μπορείτε να εξερευνήσετε τις εικονικές περιηγήσεις και τους πόρους τους που είναι διαθέσιμοι στο διαδίκτυο.
Βελτιώστε την απάντηση προσθέτοντας το πλαίσιο στην προτροπή
Η απάντηση που δώσαμε δεν είναι απολύτως αληθινή. Ας δούμε αν μπορούμε να το βελτιώσουμε παρέχοντας κάποιο πλαίσιο. Μπορείτε να προσθέσετε ένα απόσπασμα από την ανάρτηση Η AWS ανακοινώνει το νέο Κέντρο Εμπειρίας Πελατών M&E στη Νέα Υόρκη, το οποίο περιλαμβάνει ενημερώσεις για το θέμα από το 2023:
context = """Media and entertainment (M&E) customers continue to face challenges in creating more content, more quickly, and distributing it to more endpoints than ever before in their quest to delight viewers globally. Amazon Web Services (AWS), along with AWS Partners, have showcased the rapid evolution of M&E solutions for years at industry events like the National Association of Broadcasters (NAB) Show and the International Broadcast Convention (IBC). Until now, AWS for M&E technology demonstrations were accessible in this way just a few weeks out of the year. Customers are more engaged than ever before; they want to have higher quality conversations regarding user experience and media tooling. These conversations are best supported by having an interconnected solution architecture for reference. Scheduling a visit of the M&E Customer Experience Center will be available starting November 13th, please send an email to AWS-MediaEnt-CXC@amazon.com."""
Χρησιμοποιήστε ξανά το LLMChain και περάστε το προηγούμενο κείμενο ως πλαίσιο:
context_response = llm_chain.predict(context=context, question=question)
print(context_response)
Η νέα απάντηση απαντά στην ερώτηση με ενημερωμένες πληροφορίες:
Μπορείτε να επισκεφτείτε το AWS M&E Customer Experience Center στη Νέα Υόρκη από τις 13 Νοεμβρίου. Στείλτε ένα email στο AWS-MediaEnt-CXC@amazon.com για να προγραμματίσετε μια επίσκεψη.
Επιβεβαιώσαμε ότι προσθέτοντας το σωστό πλαίσιο, η απόδοση του μοντέλου βελτιώνεται. Τώρα μπορείτε να εστιάσετε τις προσπάθειές σας στην εύρεση και προσθήκη του σωστού πλαισίου για την ερώτηση που τίθεται. Με άλλα λόγια, εφαρμόστε το RAG.
Εφαρμόστε την απάντηση ερωτήσεων RAG με ενσωματώσεις BGE και Pinecone
Σε αυτή τη συγκυρία, πρέπει να αποφασίσετε για τις πηγές πληροφοριών για να βελτιώσετε τη γνώση του μοντέλου. Αυτές οι πηγές μπορεί να είναι εσωτερικές ιστοσελίδες ή έγγραφα εντός του οργανισμού σας ή πηγές δεδομένων που είναι διαθέσιμες στο κοινό. Για τους σκοπούς αυτής της ανάρτησης και για λόγους απλότητας, επιλέξαμε δύο αναρτήσεις ιστολογίου AWS που δημοσιεύτηκαν το 2023:
Αυτές οι αναρτήσεις είναι ήδη διαθέσιμες ως έγγραφα PDF στον κατάλογο έργων δεδομένων στο SageMaker Studio για γρήγορη πρόσβαση. Για να διαιρέσετε τα έγγραφα σε διαχειρίσιμα κομμάτια, μπορείτε να χρησιμοποιήσετε το RecursiveCharacterTextSplitter μέθοδος από το LangChain:
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import PyPDFDirectoryLoader loader = PyPDFDirectoryLoader("./data/") documents = loader.load() text_splitter=RecursiveCharacterTextSplitter( chunk_size=1000, chunk_overlap=5
)
docs = text_splitter.split_documents(documents)
Στη συνέχεια, χρησιμοποιήστε το μοντέλο ενσωματώσεων BGE bge-small-en Δημιουργήθηκε από την Ακαδημία Τεχνητής Νοημοσύνης του Πεκίνου (BAAI) που είναι διαθέσιμο στο Hugging Face για τη δημιουργία των ενσωματώσεων αυτών των κομματιών. Κατεβάστε και αποθηκεύστε το μοντέλο στον τοπικό κατάλογο στο Studio. Χρησιμοποιούμε το fp32 για να μπορεί να τρέχει στην CPU της παρουσίας.
em_model_name = "BAAI/bge-small-en"
em_model_path = f"./em-model" from transformers import AutoModel
# Load model from HuggingFace Hub
em_model = AutoModel.from_pretrained(em_model_name,torch_dtype=torch.float32)
em_tokenizer = AutoTokenizer.from_pretrained(em_model_name,device="cuda") # save model to disk
em_tokenizer.save_pretrained(save_directory=f"{em_model_path}/model",from_pt=True)
em_model.save_pretrained(save_directory=f"{em_model_path}/model",from_pt=True)
em_model.eval()
Χρησιμοποιήστε τον ακόλουθο κώδικα για να δημιουργήσετε μια συνάρτηση embedding_generator, η οποία παίρνει τα κομμάτια του εγγράφου ως είσοδο και δημιουργεί τις ενσωματώσεις χρησιμοποιώντας το μοντέλο BGE:
# Tokenize sentences
def tokenize_text(_input, device): return em_tokenizer( [_input], padding=True, truncation=True, return_tensors='pt' ).to(device) # Run embedding task as a function with model and text sentences as input
def embedding_generator(_input, normalize=True): # Compute token embeddings with torch.no_grad(): embedded_output = em_model( **tokenize_text( _input, em_model.device ) ) sentence_embeddings = embedded_output[0][:, 0] # normalize embeddings if normalize: sentence_embeddings = torch.nn.functional.normalize( sentence_embeddings, p=2, dim=1 ) return sentence_embeddings[0, :].tolist() sample_sentence_embedding = embedding_generator(docs[0].page_content)
print(f"Embedding size of the document --->", len(sample_sentence_embedding))
Σε αυτήν την ανάρτηση, επιδεικνύουμε μια ροή εργασίας RAG χρησιμοποιώντας το Pinecone, ένα διαχειριζόμενο, εγγενές στο cloud διανυσματική βάση δεδομένων που προσφέρει επίσης ένα API για αναζήτηση ομοιότητας. Είστε ελεύθεροι να ξαναγράψετε τον ακόλουθο κώδικα για να χρησιμοποιήσετε την προτιμώμενη διανυσματική βάση δεδομένων σας.
Αρχικοποιούμε α Πελάτης Pinecone python και δημιουργήστε ένα νέο διανυσματικό ευρετήριο αναζήτησης χρησιμοποιώντας το μήκος εξόδου του μοντέλου ενσωμάτωσης. Χρησιμοποιούμε την ενσωματωμένη κλάση Pinecone του LangChain για να απορροφήσουμε τις ενσωματώσεις που δημιουργήσαμε στο προηγούμενο βήμα. Χρειάζεται τρεις παραμέτρους: τα έγγραφα για απορρόφηση, τη λειτουργία δημιουργίας ενσωματώσεων και το όνομα του ευρετηρίου Pinecone.
import pinecone
pinecone.init( api_key = os.environ["PINECONE_API_KEY"], environment = os.environ["PINECONE_ENV"]
)
#check if index already exists, if not we create it
index_name = "rag-index"
if index_name not in pinecone.list_indexes(): pinecone.create_index( name=index_name, dimension=len(sample_sentence_embedding), ## 384 for bge-small-en metric='cosine' ) #insert the embeddings
from langchain.vectorstores import Pinecone
vector_store = Pinecone.from_documents( docs, embedding_generator, index_name=index_name
)
Με το μοντέλο συνομιλίας Llama-2 7B φορτωμένο στη μνήμη και τις ενσωματώσεις ενσωματωμένες στο ευρετήριο Pinecone, μπορείτε τώρα να συνδυάσετε αυτά τα στοιχεία για να βελτιώσετε τις απαντήσεις του Llama 2 για την περίπτωση χρήσης απαντήσεων σε ερωτήσεις. Για να το πετύχετε αυτό, μπορείτε να χρησιμοποιήσετε το LangChain RetrievalQA, το οποίο αυξάνει την αρχική προτροπή με τα πιο παρόμοια έγγραφα από το vector store. Με ρύθμιση return_source_documents=True
, αποκτάτε ορατότητα στα ακριβή έγγραφα που χρησιμοποιούνται για τη δημιουργία της απάντησης ως μέρος της απάντησης, επιτρέποντάς σας να επαληθεύσετε την ακρίβεια της απάντησης.
from langchain.chains import RetrievalQA
import textwrap #helper method to improve the readability of the response
def print_response(llm_response): temp = [textwrap.fill(line, width=100) for line in llm_response['result'].split('n')] response = 'n'.join(temp) print(f"{llm_response['query']}n n{response}'n n Source Documents:") for source in llm_response["source_documents"]: print(source.metadata) llm_qa_chain = RetrievalQA.from_chain_type( llm=llm, #the Llama-2 7b chat model chain_type='stuff', retriever=vector_store.as_retriever(search_kwargs={"k": 2}), # perform similarity search in Pinecone return_source_documents=True, #show the documents that were used to answer the question chain_type_kwargs={"prompt": prompt_template}
)
print_response(llm_qa_chain(question))
Παίρνουμε την εξής απάντηση:
Ε: Πότε μπορώ να επισκεφτώ το Κέντρο Εμπειρίας Πελατών AWS M&E στη Νέα Υόρκη;
Α: Είμαι στην ευχάριστη θέση να βοηθήσω! Σύμφωνα με το πλαίσιο, το AWS M&E Customer Experience Center στη Νέα Υόρκη θα είναι διαθέσιμο για επισκέψεις από τις 13 Νοεμβρίου. Μπορείτε να στείλετε ένα email στο AWS-MediaEnt-CXC@amazon.com για να προγραμματίσετε μια επίσκεψη.'
Έγγραφα πηγής:
{'page': 4.0, 'source': 'data/AWS ανακοινώνει το νέο M&E Customer Experience Center στη Νέα Υόρκη _ AWS for M&E Blog.pdf'}
{'page': 2.0, 'source': 'data/AWS ανακοινώνει το νέο M&E Customer Experience Center στη Νέα Υόρκη _ AWS for M&E Blog.pdf'}
Ας δοκιμάσουμε μια διαφορετική ερώτηση:
question2=" How many awards have AWS Media Services won in 2023?"
print_response(llm_qa_chain(question2))
Παίρνουμε την εξής απάντηση:
Ε: Πόσα βραβεία έχει κερδίσει η AWS Media Services το 2023;
Α: Σύμφωνα με την ανάρτηση ιστολογίου, η AWS Media Services έχει κερδίσει πέντε βραβεία κλάδου το 2023.'
Έγγραφα πηγής:
{'page': 0.0, 'source': 'data/AWS Media Services βραβευμένη βιομηχανία _ AWS for M&E Blog.pdf'}
{'page': 1.0, 'source': 'data/AWS Media Services βραβευμένη βιομηχανία _ AWS for M&E Blog.pdf'}
Αφού δημιουργήσετε ένα επαρκές επίπεδο εμπιστοσύνης, μπορείτε να αναπτύξετε τα μοντέλα σε Καταληκτικά σημεία SageMaker για συμπεράσματα σε πραγματικό χρόνο. Αυτά τα τελικά σημεία διαχειρίζονται πλήρως και προσφέρουν υποστήριξη για αυτόματη κλιμάκωση.
Το SageMaker προσφέρει μεγάλα συμπεράσματα μοντέλων χρησιμοποιώντας δοχεία συμπερασμάτων μεγάλων μοντέλων (LMI), τα οποία μπορούμε να χρησιμοποιήσουμε για να αναπτύξουμε τα μοντέλα μας. Αυτά τα κοντέινερ είναι εξοπλισμένα με προεγκατεστημένες βιβλιοθήκες ανοιχτού κώδικα, όπως το DeepSpeed, διευκολύνοντας την εφαρμογή τεχνικών βελτίωσης της απόδοσης, όπως ο παραλληλισμός τανυστών κατά την εξαγωγή συμπερασμάτων. Επιπλέον, χρησιμοποιούν το DJLServing ως προκατασκευασμένο ενσωματωμένο διακομιστή μοντέλων. DJLServing είναι μια λύση υψηλής απόδοσης, καθολικής εξυπηρέτησης μοντέλων που προσφέρει υποστήριξη για δυναμική παρτίδα και αυτόματη κλιμάκωση εργαζόμενων, αυξάνοντας έτσι την απόδοση.
Στην προσέγγισή μας, χρησιμοποιούμε το SageMaker LMI με DJLServing και DeepSpeed Inference για την ανάπτυξη των μοντέλων Llama-2-chat 7b και BGE στα τελικά σημεία του SageMaker που εκτελούνται σε ml.g5.2xlarge
στιγμιότυπα, επιτρέποντας την εξαγωγή συμπερασμάτων σε πραγματικό χρόνο. Εάν θέλετε να ακολουθήσετε αυτά τα βήματα μόνοι σας, ανατρέξτε στο συνοδευτικό σημειωματάριο για λεπτομερείς οδηγίες.
Θα χρειαστείτε δύο ml.g5.2xlarge
περιπτώσεις για ανάπτυξη. Για να ελέγξετε ή να αυξήσετε το όριο σας, ανοίξτε την κονσόλα AWS Service Quotas, επιλέξτε Υπηρεσίες AWS στο παράθυρο πλοήγησης, επιλέξτε Amazon Sage Maker, και ανατρέξτε στην τιμή για ml.g5.2xlarge
για χρήση τελικού σημείου.
Τα ακόλουθα βήματα περιγράφουν τη διαδικασία ανάπτυξης προσαρμοσμένων μοντέλων για τη ροή εργασίας RAG σε ένα τελικό σημείο του SageMaker:
- Αναπτύξτε το Λάμα-2 7β μοντέλο συνομιλίας σε τελικό σημείο SageMaker σε πραγματικό χρόνο που εκτελείται σε ένα
ml.g5.2xlarge
παράδειγμα για γρήγορη δημιουργία κειμένου. - Αναπτύξτε το BAAI/bge-small-en-v1.5 μοντέλο ενσωματώσεων σε τελικό σημείο SageMaker σε πραγματικό χρόνο που εκτελείται σε ένα
ml.g5.2xlarge
παράδειγμα. Εναλλακτικά, μπορείτε να αναπτύξετε το δικό σας μοντέλο ενσωμάτωσης. - Κάντε μια ερώτηση και χρησιμοποιήστε το LangChain RetrievalQA για να ενισχύσετε την προτροπή με τα πιο παρόμοια έγγραφα από το Pinecone, αυτή τη φορά χρησιμοποιώντας το μοντέλο που έχει αναπτυχθεί στο τελικό σημείο του SageMaker σε πραγματικό χρόνο:
# convert your local LLM into SageMaker endpoint LLM
llm_sm_ep = SagemakerEndpoint( endpoint_name=tg_sm_model.endpoint_name, # <--- Your text-gen model endpoint name region_name=region, model_kwargs={ "temperature": 0.05, "max_new_tokens": 512 }, content_handler=content_handler,
) llm_qa_smep_chain = RetrievalQA.from_chain_type( llm=llm_sm_ep, # <--- This uses SageMaker Endpoint model for inference chain_type='stuff', retriever=vector_store.as_retriever(search_kwargs={"k": 2}), return_source_documents=True, chain_type_kwargs={"prompt": prompt_template}
)
- Χρησιμοποιήστε το LangChain για να επαληθεύσετε ότι το τελικό σημείο SageMaker με το μοντέλο ενσωμάτωσης λειτουργεί όπως αναμένεται, ώστε να μπορεί να χρησιμοποιηθεί για μελλοντική απορρόφηση εγγράφων:
response_model = smr_client.invoke_endpoint( EndpointName=em_sm_model.endpoint_name, <--- Your embedding model endpoint name Body=json.dumps({ "text": "This is a sample text" }), ContentType="application/json",
) outputs = json.loads(response_model["Body"].read().decode("utf8"))['outputs']
εκκαθάριση
Ολοκληρώστε τα παρακάτω βήματα για να καθαρίσετε τους πόρους σας:
- Όταν ολοκληρώσετε την εργασία στο φορητό υπολογιστή SageMaker Studio, βεβαιωθείτε ότι έχετε τερματίσει τη λειτουργία του
ml.g5.2xlarge
για να αποφύγετε τυχόν χρεώσεις επιλέγοντας το εικονίδιο διακοπής. Μπορείτε επίσης να ρυθμίσετε σενάρια διαμόρφωσης κύκλου ζωής να κλείνει αυτόματα τους πόρους όταν δεν χρησιμοποιούνται.
- Εάν αναπτύξατε τα μοντέλα στα τελικά σημεία του SageMaker, εκτελέστε τον ακόλουθο κώδικα στο τέλος του σημειωματαρίου για να διαγράψετε τα τελικά σημεία:
#delete your text generation endpoint
sm_client.delete_endpoint( EndpointName=tg_sm_model.endpoint_name
)
# delete your text embedding endpoint
sm_client.delete_endpoint( EndpointName=em_sm_model.endpoint_name
)
- Τέλος, εκτελέστε την ακόλουθη γραμμή για να διαγράψετε το ευρετήριο Pinecone:
pinecone.delete_index(index_name)
Συμπέρασμα
Τα σημειωματάρια SageMaker παρέχουν έναν απλό τρόπο για να ξεκινήσετε το ταξίδι σας με το Retrieval Augmented Generation. Σας επιτρέπουν να πειραματιστείτε διαδραστικά με διάφορα μοντέλα, διαμορφώσεις και ερωτήσεις χωρίς να δημιουργήσετε πρόσθετη υποδομή. Σε αυτήν την ανάρτηση, δείξαμε πώς να βελτιώσουμε την απόδοση της συνομιλίας Llama 2 7b σε περίπτωση χρήσης απάντησης ερωτήσεων χρησιμοποιώντας το LangChain, το μοντέλο ενσωματώσεων BGE και το Pinecone. Για να ξεκινήσετε, εκκινήστε το SageMaker Studio και εκτελέστε το σημειωματάριο διαθέσιμο στα παρακάτω GitHub repo. Μοιραστείτε τις σκέψεις σας στην ενότητα σχολίων!
Σχετικά με τους συγγραφείς
Αναστασία Τζεβελέκα είναι Αρχιτέκτονας Μηχανικής Μάθησης και Ειδικών Λύσεων AI στην AWS. Συνεργάζεται με πελάτες στην EMEA και τους βοηθά να αρχιτεκτονήσουν λύσεις μηχανικής εκμάθησης σε κλίμακα χρησιμοποιώντας υπηρεσίες AWS. Έχει εργαστεί σε έργα σε διαφορετικούς τομείς, συμπεριλαμβανομένων των εργαλείων επεξεργασίας φυσικής γλώσσας (NLP), MLOps και εργαλείων Low Code No Code.
Pranav Murthy είναι AI/ML Specialist Solutions Architect στο AWS. Επικεντρώνεται στο να βοηθά τους πελάτες να δημιουργήσουν, να εκπαιδεύσουν, να αναπτύξουν και να μεταφέρουν φόρτους εργασίας μηχανικής εκμάθησης (ML) στο SageMaker. Προηγουμένως εργάστηκε στη βιομηχανία ημιαγωγών αναπτύσσοντας μεγάλα μοντέλα υπολογιστικής όρασης (CV) και επεξεργασίας φυσικής γλώσσας (NLP) για τη βελτίωση των διαδικασιών ημιαγωγών. Στον ελεύθερο χρόνο του, του αρέσει να παίζει σκάκι και να ταξιδεύει.
- SEO Powered Content & PR Distribution. Ενισχύστε σήμερα.
- PlatoData.Network Vertical Generative Ai. Ενδυναμώστε τον εαυτό σας. Πρόσβαση εδώ.
- PlatoAiStream. Web3 Intelligence. Ενισχύθηκε η γνώση. Πρόσβαση εδώ.
- PlatoESG. Ανθρακας, Cleantech, Ενέργεια, Περιβάλλον, Ηλιακός, Διαχείριση των αποβλήτων. Πρόσβαση εδώ.
- PlatoHealth. Ευφυΐα βιοτεχνολογίας και κλινικών δοκιμών. Πρόσβαση εδώ.
- πηγή: https://aws.amazon.com/blogs/machine-learning/use-amazon-sagemaker-studio-to-build-a-rag-question-answering-solution-with-llama-2-langchain-and-pinecone-for-fast-experimentation/
- :έχει
- :είναι
- :δεν
- :που
- $UP
- 1
- 10
- 100
- 13
- 16
- 2023
- 33
- 500
- 7
- a
- AC
- Ακαδημία
- πρόσβαση
- Πρόσβαση σε δεδομένα
- προσιτός
- Σύμφωνα με
- Λογαριασμός
- Λογαριασμοί
- ακρίβεια
- ακριβής
- Κατορθώνω
- προσθέτω
- προσθήκη
- Πρόσθετος
- Επιπλέον
- εμμένω
- πάλι
- AI
- AI / ML
- επιτρέπουν
- Επιτρέποντας
- επιτρέπει
- κατά μήκος
- ήδη
- Επίσης
- Amazon
- Amazon Sage Maker
- Στούντιο Amazon SageMaker
- Amazon υπηρεσίες Web
- Amazon Web Services (AWS)
- an
- και
- ανακοινώνει
- απάντηση
- απαντήσεις
- κάθε
- APIs
- app
- εφαρμογές
- πλησιάζω
- εφαρμογές
- αρχιτεκτονική
- ΕΙΝΑΙ
- τεχνητός
- τεχνητή νοημοσύνη
- AS
- ζητώ
- εκτιμώ
- Βοηθός
- Σχέση
- υποθέτει
- At
- αυξάνω
- επαυξημένης
- αυξάνει
- Πιστοποίηση
- αυτόματη
- αυτομάτως
- διαθέσιμος
- αποφύγετε
- απονέμεται
- βραβεία
- AWS
- βασίζονται
- BE
- ήταν
- πριν
- ΚΑΛΎΤΕΡΟΣ
- Καλύτερα
- Μπλοκ
- Μηνύματα Blog
- σώμα
- αναμετάδοση
- χτίζω
- ενσωματωμένο
- by
- CAN
- περίπτωση
- περιπτώσεις
- Κέντρο
- αλυσίδα
- αλυσίδες
- προκλήσεις
- φορτία
- έλεγχος
- Σκάκι
- Επιλέξτε
- επιλέγοντας
- επιλέγονται
- Πόλη
- τάξη
- καθαρός
- κλικ
- κλειστό
- κωδικός
- συνεργάζομαι
- συναδέλφους
- COM
- συνδυασμός
- συνδυάζει
- Ελάτε
- έρχεται
- σχόλια
- πλήρης
- Υπολογίστε
- υπολογιστή
- Computer Vision
- συνοπτικός
- εμπιστοσύνη
- διαμόρφωση
- ΕΠΙΒΕΒΑΙΩΜΕΝΟΣ
- αποτελείται
- πρόξενος
- Εμπορευματοκιβώτια
- περιεχόμενο
- συμφραζόμενα
- ΣΥΝΕΧΕΙΑ
- Σύμβαση
- συνομιλίες
- μετατρέψετε
- Αντίστοιχος
- θα μπορούσε να
- Covid-19
- Πανδημία COVID-19
- δημιουργία
- δημιουργήθηκε
- δημιουργία
- Τη στιγμή
- έθιμο
- πελάτης
- εμπειρία του πελάτη
- Πελάτες
- ημερομηνία
- βάση δεδομένων
- βάσεις δεδομένων
- αποφασίζει
- Προεπιλογή
- απόλαυση
- αποδεικνύουν
- κατέδειξε
- εξαρτήσεις
- παρατάσσω
- αναπτυχθεί
- ανάπτυξη
- ανάπτυξη
- λεπτομερής
- ανάπτυξη
- Ανάπτυξη
- συσκευή
- διάλογος
- διαφορετικές
- συζητήσουν
- διανομή
- διαιρούν
- έγγραφο
- έγγραφα
- τομέα
- domains
- Don
- Μην
- κάτω
- κατεβάσετε
- δυο
- κατά την διάρκεια
- δυναμικός
- e
- Νωρίτερα
- εύκολα
- προσπάθειες
- στοιχεία
- ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
- ενσωμάτωση
- ΕΜΕΑ
- δίνει τη δυνατότητα
- ενεργοποίηση
- τέλος
- Τελικό σημείο
- ασχολούνται
- ενίσχυση
- Ψυχαγωγία
- εξ ολοκλήρου
- Περιβάλλον
- εξοπλισμένο
- εγκατεστημένος
- εκδηλώσεις
- ΠΑΝΤΑ
- εξέλιξη
- παράδειγμα
- υπάρχει
- αναμένω
- αναμένεται
- εμπειρία
- πείραμα
- διερευνήσει
- εξωτερικός
- εκχύλισμα
- Πρόσωπο
- διευκολύνοντας
- FAST
- ταχύτερα
- Χαρακτηριστικά
- λίγοι
- τελικός
- εύρεση
- Όνομα
- πρώτη φορά
- πέντε
- Συγκέντρωση
- εστιάζει
- ακολουθήστε
- Εξής
- Για
- μορφή
- μορφή
- Προς τα εμπρός
- Δωρεάν
- φιλικό
- από
- πλήρως
- λειτουργία
- λειτουργικός
- μελλοντικός
- Κέρδος
- παράγουν
- παράγεται
- δημιουργεί
- γενεά
- γενετική
- Παραγωγική τεχνητή νοημοσύνη
- γεννήτρια
- παίρνω
- Παγκόσμια
- Στόχοι
- μετάβαση
- GPU
- χορηγείται
- ευτυχισμένος
- Έχω
- που έχει
- he
- βοήθεια
- χρήσιμο
- βοήθεια
- βοηθά
- υψηλού επιπέδου
- υψηλή απόδοση
- υψηλότερο
- του
- Επιτυχία
- Πως
- Πώς να
- Ωστόσο
- HTML
- HTTPS
- Hub
- Πρόσωπο αγκαλιάς
- i
- IBC
- ICON
- ID
- Ταυτότητα
- if
- απεικονίζει
- εικόνα
- εφαρμογή
- εκτέλεση
- εκτελεστικών
- εισαγωγή
- βελτίωση
- βελτιωθεί
- βελτιώνει
- in
- Σε άλλες
- περιλαμβάνει
- Συμπεριλαμβανομένου
- Αυξάνουν
- αύξηση
- ευρετήριο
- βιομηχανία
- βιομηχανία Εκδηλώσεις
- πληροφορίες
- Υποδομή
- αρχικός
- εισαγωγή
- εγκαθιστώ
- παράδειγμα
- οδηγίες
- ενσωματωθεί
- Νοημοσύνη
- διασυνδεδεμένα
- εσωτερικός
- International
- Internet
- Πρόσβαση στο Ίντερνετ
- σε
- IT
- ΤΟΥ
- ταξίδι
- jpg
- json
- μόλις
- Διατήρηση
- πλήκτρα
- Ξέρω
- γνώση
- Γλώσσα
- large
- ξεκινήσει
- μάθηση
- αριστερά
- Μήκος
- Επίπεδο
- βιβλιοθήκες
- Μου αρέσει
- LIMIT
- γραμμή
- Είδος μικρής καμήλας
- LLM
- φορτίο
- φορτωτής
- τοπικός
- Χαμηλός
- μηχανή
- μάθηση μηχανής
- κάνω
- ευχείριστος
- διαχειρίζεται
- πολοί
- ταιριάζουν
- ανώτατο όριο
- Εντομεταξύ
- Εικόνες / Βίντεο
- Μνήμη
- Meta
- Μεταδεδομένα
- μέθοδος
- μεταναστεύσουν
- ML
- MLOps
- μοντέλο
- μοντέλα
- περισσότερο
- πλέον
- πρέπει
- NAB
- όνομα
- εθνικός
- Φυσικό
- Επεξεργασία φυσικής γλώσσας
- Πλοηγηθείτε
- Πλοήγηση
- απαραίτητος
- Ανάγκη
- ανάγκες
- Νέα
- Νέα Πρόσβαση
- Νέα Υόρκη
- Νέα Υόρκη
- επόμενη
- nlp
- Όχι.
- σημειωματάριο
- Νοέμβριος
- τώρα
- of
- προσφορά
- προσφορές
- επίσημος ανώτερος υπάλληλος
- Επίσημη ιστοσελίδα
- on
- ONE
- διαδικτυακά (online)
- ανοίξτε
- ανοικτού κώδικα
- βελτιστοποιημένη
- Επιλογή
- Επιλογές
- or
- επιχειρήσεις
- OS
- ΑΛΛΑ
- δικός μας
- έξω
- περίγραμμα
- παραγωγή
- εξόδους
- δική
- μπλοκ
- σελίδα
- πανδημία
- παράθυρο
- παράμετροι
- μέρος
- Συνεργάτες
- passieren
- Εκτελέστε
- επίδοση
- δικαιώματα
- φάση
- κομμάτια
- Πλάτων
- Πληροφορία δεδομένων Plato
- Πλάτωνα δεδομένα
- παιχνίδι
- σας παρακαλούμε
- Θέση
- Δημοσιεύσεις
- προτιμάται
- παρόν
- προηγούμενος
- προηγουμένως
- διαδικασια μας
- Διεργασίες
- μεταποίηση
- Προφίλ ⬇️
- σχέδιο
- έργα
- πρωτότυπο
- προτυποποίηση
- παρέχουν
- χορήγηση
- δημόσιο
- δημοσίως
- δημοσιεύθηκε
- σκοποί
- Python
- pytorch
- ποιότητα
- αναζήτηση
- ερώτηση
- Ερωτήσεις
- Γρήγορα
- γρήγορα
- γρήγορα
- ταχέως
- φθάνοντας
- σε πραγματικό χρόνο
- πρόσφατος
- συνταγή
- παραπέμπω
- αναφορά
- σχετικά με
- ξανανοίγω
- απαιτούν
- απαιτείται
- απαιτήσεις
- Απαιτεί
- Υποστηρικτικό υλικό
- απάντησης
- απαντήσεις
- αποτέλεσμα
- περίληψη
- απόδοση
- ανασκόπηση
- δεξιά
- Ρόλος
- τρέξιμο
- τρέξιμο
- σοφός
- χάρη
- ίδιο
- Αποθήκευση
- αποθηκεύονται
- λένε
- Κλίμακα
- απολέπιση
- πρόγραμμα
- προγραμματισμός
- Αναζήτηση
- αναζητήσεις
- Δεύτερος
- τμήματα
- δείτε
- ημιαγωγός
- στείλετε
- αποστέλλονται
- διακομιστής
- υπηρεσία
- Υπηρεσίες
- σειρά
- τον καθορισμό
- Κοινοποίηση
- αυτή
- δείχνουν
- παρουσιάστηκε
- έδειξε
- κλειστός
- τερματίστε
- παρόμοιες
- απλότητα
- ενιαίας
- Μέγεθος
- So
- Μ.Κ.Δ
- social media
- λύση
- Λύσεις
- μερικοί
- Πηγή
- Πηγές
- ειδικός
- συγκεκριμένες
- ειδικά
- αυτόνομο
- Εκκίνηση
- ξεκίνησε
- Ξεκινήστε
- στατικός
- Βήμα
- Βήματα
- στάση
- κατάστημα
- αποθηκεύονται
- καταστήματα
- ειλικρινής
- στούντιο
- τέτοιος
- επαρκής
- υποστήριξη
- υποστηριζόνται!
- βέβαιος
- ταχέως
- παίρνει
- Έργο
- εργασίες
- τεχνικές
- Τεχνολογία
- πρότυπο
- κείμενο
- από
- ότι
- Η
- τους
- Τους
- Εκεί.
- εκ τούτου
- Αυτοί
- αυτοί
- αυτό
- τρία
- Μέσω
- διακίνηση
- ώρα
- προς την
- ένδειξη
- συμβολίζω
- εργαλεία
- τοπικός
- δάδα
- εκδρομές
- Τρένο
- μετασχηματιστές
- μετάβαση
- Ταξίδια
- αληθής
- προσπαθώ
- δύο
- τύπος
- τύποι
- τυπικός
- συνήθως
- υπό
- Παγκόσμιος
- μέχρι
- up-to-ημερομηνία
- ενημερώσεις
- Χρήση
- χρήση
- περίπτωση χρήσης
- μεταχειρισμένος
- Χρήστες
- Η εμπειρία χρήστη
- χρησιμοποιεί
- χρησιμοποιώντας
- χρησιμοποιώ
- αξία
- διάφορα
- Επαλήθευση
- επαληθεύει
- εκδοχή
- μέσω
- θεατές
- Πραγματικός
- εικονικές περιηγήσεις
- ορατότητα
- όραμα
- Επίσκεψη
- Επισκέψεις
- walk
- θέλω
- Τρόπος..
- we
- ιστός
- διαδικτυακές υπηρεσίες
- Ιστοσελίδα : www.example.gr
- Εβδ.
- ήταν
- πότε
- οποτεδήποτε
- Ποιό
- ενώ
- θα
- με
- εντός
- χωρίς
- Κέρδισε
- λόγια
- Εργασία
- εργάστηκαν
- εργάτης
- ροής εργασίας
- εργαζόμενος
- λειτουργεί
- έτος
- χρόνια
- Υόρκη
- Εσείς
- Σας
- τον εαυτό σας
- zephyrnet