paint-brush
100 Gün Yapay Zeka, 18. Gün: Microsoft Semantic Kernel kullanarak bir RAG geliştirmeile@sindamnataraj
1,042 okumalar
1,042 okumalar

100 Gün Yapay Zeka, 18. Gün: Microsoft Semantic Kernel kullanarak bir RAG geliştirme

ile Nataraj5m2024/04/05
Read on Terminal Reader

Çok uzun; Okumak

Bu yazıda Microsoft'un Anlamsal Çekirdeğini kullanarak bir RAG oluşturmaya bakıyoruz.
featured image - 100 Gün Yapay Zeka, 18. Gün: Microsoft Semantic Kernel kullanarak bir RAG geliştirme
Nataraj HackerNoon profile picture

Selam millet! Ben Nataraj'ım ve tıpkı sizin gibi ben de yapay zekanın son zamanlardaki ilerlemesine hayran kaldım. Gelişmeleri yakından takip etmem gerektiğinin farkına vararak kişisel bir öğrenme yolculuğuna çıkmaya karar verdim. 100 günlük yapay zeka doğdu! Bu seriyle yüksek lisans (LLM) hakkında bilgi edineceğim ve fikirleri, deneyleri, görüşleri, trendleri ve öğrendiklerimi blog yazılarım aracılığıyla paylaşacağım. Yolculuğu HackerNoon'da takip edebilirsiniz Burada veya kişisel web sitem Burada . Bugünkü yazımızda Microsoft'un Semantic Kernel'ini kullanarak nasıl RAG geliştirebileceğimize bakacağız.

Alma artırılmış nesil (RAG), farklı LLM'ler kullanılarak geliştirilen en yaygın uygulamalardan biridir. Daha önce langchain kullanarak bir RAG'nin nasıl geliştirileceğini araştırmıştık. Bu yazıda Microsoft'un Semantic Kernel'ini kullanarak bir RAG oluşturacağız.


Devam etmek için Open AI API'ye ihtiyacınız olacak.

Adım 1: Anlamsal Çekirdeği Başlatın

İlk adım anlamsal çekirdeği başlatmak ve çekirdeğe, Open AI'nin sohbet tamamlama özelliğini ve Open AI'nin daha sonra yerleştirmeler oluşturmak için kullanacağımız yerleştirme modelini kullanmak istediğimizi söylemektir. Ayrıca çekirdeğe bizim durumumuzda Chroma DB olacak bir hafıza deposu kullanmak istediğimizi de söyleyeceğiz. Çekirdeğe bu bellek deposunun kalıcı olması gerektiğini de söylediğimizi unutmayın.


 kernel = sk.Kernel() kernel.add_text_completion_service("openai", OpenAIChatCompletion("gpt-4",api_key)) kernel.add_text_embedding_generation_service("openai-embedding", OpenAITextEmbedding("text-embedding-ada-002", api_key)) # chrome db kernel.register_memory_store(memory_store=ChromaMemoryStore(persist_directory='mymemories2')) print("Made two new services attached to the kernel and made a Chroma memory store that's persistent.")

Adım 2 – Yerleştirmeler Oluşturun

Bu örnekte bir pizza işletmesi için oluşturduğumuz SWOT analizine ilişkin sorulara yanıt verebilecek bir RAG oluşturuyoruz. Bunu yapmak için SWOT analizini alıp bunlara ilişkin yerleştirmeleri alıyoruz ve karşılık gelen yerleştirmeleri son adımda oluşturduğumuz kalıcı veri deposundaki "SWOT" adlı bir koleksiyonda saklıyoruz.


 strength_questions = ["What unique recipes or ingredients does the pizza shop use?","What are the skills and experience of the staff?","Does the pizza shop have a strong reputation in the local area?","Are there any unique features of the shop or its location that attract customers?", "Does the pizza shop have a strong reputation in the local area?", "Are there any unique features of the shop or its location that attract customers?"] weakness_questions = ["What are the operational challenges of the pizza shop? (eg, slow service, high staff turnover)","Are there financial constraints that limit growth or improvements?","Are there any gaps in the product offering?","Are there customer complaints or negative reviews that need to be addressed?"] opportunities_questions = ["Is there potential for new products or services (eg, catering, delivery)?","Are there under-served customer segments or market areas?","Can new technologies or systems enhance the business operations?","Are there partnerships or local events that can be leveraged for marketing?"] threats_questions = ["Who are the major competitors and what are they offering?","Are there potential negative impacts due to changes in the local area (eg, construction, closure of nearby businesses)?","Are there economic or industry trends that could impact the business negatively (eg, increased ingredient costs)?","Is there any risk due to changes in regulations or legislation (eg, health and safety, employment)?"] strengths = [ "Unique garlic pizza recipe that wins top awards","Owner trained in Sicily at some of the best pizzerias","Strong local reputation","Prime location on university campus" ] weaknesses = [ "High staff turnover","Floods in the area damaged the seating areas that are in need of repair","Absence of popular calzones from menu","Negative reviews from younger demographic for lack of hip ingredients" ] opportunities = [ "Untapped catering potential","Growing local tech startup community","Unexplored online presence and order capabilities","Upcoming annual food fair" ] threats = [ "Competition from cheaper pizza businesses nearby","There's nearby street construction that will impact foot traffic","Rising cost of cheese will increase the cost of pizzas","No immediate local regulatory changes but it's election season" ] print("✅ SWOT analysis for the pizza shop is resident in native memory") memoryCollectionName = "SWOT" # lets put these in memory / vector store async def run_storeinmemory_async(): for i in range(len(strengths)): await kernel.memory.save_information_async(memoryCollectionName, id=f"strength-{i}", text=f"Internal business strength (S in SWOT) that makes customers happy and satisfied Q&A: Q: {strength_questions[i]} A: {strengths[i]}") for i in range(len(weaknesses)): await kernel.memory.save_information_async(memoryCollectionName, id=f"weakness-{i}", text=f"Internal business weakness (W in SWOT) that makes customers unhappy and dissatisfied Q&A: Q: {weakness_questions[i]} A: {weaknesses[i]}") for i in range(len(opportunities)): await kernel.memory.save_information_async(memoryCollectionName, id=f"opportunity-{i}", text=f"External opportunity (O in SWOT) for the business to gain entirely new customers Q&A: Q: {opportunities_questions[i]} A: {opportunities[i]}") for i in range(len(threats)): await kernel.memory.save_information_async(memoryCollectionName, id=f"threat-{i}", text=f"External threat (T in SWOT) to the business that impacts its survival Q&A: Q: {threats_questions[i]} A: {threats[i]}") asyncio.run(run_storeinmemory_async()) print("😶‍🌫️ Embeddings for SWOT have been generated and stored in vector db")

Adım 3 – Sorunuzu sorun

Artık verilerimizin yerleştirmeleri chrome vektör mağazasında depolandığına göre pizza işiyle ilgili sorular sorabilir ve yanıt alabiliriz.


 #ask questions on swot potential_question = "What are the easiest ways to make more money?" counter = 0 async def run_askquestions_async(): memories = await kernel.memory.search_async(memoryCollectionName, potential_question, limit=5, min_relevance_score=0.5) display(f"### ❓ Potential question: {potential_question}") for memory in memories: if counter == 0: related_memory = memory.text counter += 1 print(f" > 🧲 Similarity result {counter}:\n >> ID: {memory.id}\n Text: {memory.text} Relevance: {memory.relevance}\n") asyncio.run(run_askquestions_async())


Bu, Semantic Kernel kullanılarak bir RAG'ın nasıl oluşturulabileceğinin son derece basitleştirilmiş bir versiyonudur. Şu anda LLM'leri kullanarak oluşturmak için en popüler çerçeve seçimi langchain'dir ve daha önce langchain kullanarak bir RAG'nin nasıl oluşturulacağını görmüştük. Her ne kadar araç üreten şirketlerin sayısı arttıkça Langchain daha popüler olsa da, daha karmaşık araçlar da ortaya çıkacak ve Semantic Kernel'in onu öne çıkaran birkaç özel özelliğe sahip olduğunu gördüm.


Yapay Zekanın 100 Günü'nün 18. Günü bu kadar.


Büyük teknolojide olup biten her şeyin ardındaki ikinci dereceden içgörülerden bahsettiğim Ortalamanın Üstünde adlı bir haber bülteni yazıyorum. Teknolojiyle ilgiliyseniz ve ortalama olmak istemiyorsanız abone olun .


Yapay zekanın 100 günüyle ilgili en son güncellemeler için beni Twitter , LinkedIn veya HackerNoon'da takip edin veya bu sayfayı yer imlerinize ekleyin . Teknolojiyle ilgileniyorsanız, buradaki teknoloji profesyonellerinden oluşan topluluğuma katılmak ilginizi çekebilir.