1 puan yazan GN⁺ 2023-07-10 | 1 yorum | WhatsApp'ta paylaş
  • PDF belgelerini indekslemek ve sorgulamak için kullanılan bir araç; OpenAI embeddings ve FAISS kullanarak PDF belgeleriyle konuşabilen bir RAG sistemi uygular
  • PDF klasöründeki metni çıkarır, bunu 1000 karakterlik parçalara ve 200 karakterlik örtüşmeye göre böler, ardından OpenAI text-embedding-ada-002 modeliyle embedding üretip yerel FAISS index içine kaydeder
  • Sorgulama aşamasında kayıtlı FAISS vektör indeksini yükler, soruyu embedding'e dönüştürür, en benzer ilk 3 belge parçasını bulur ve benzerlik puanlarıyla birlikte metin parçacıklarını gösterir
  • Yanıt üretimi, alınan bağlam temelinde GPT-4'ün tutarlı bir yanıt sentezlemesi şeklinde çalışır
  • Embedding'leri yerelde sakladığı için her sorguda yeniden embedding üretmek gerekmez; ilk oluşturmanın ardından veriler OpenAI internet erişimi olmadan sorgulanabilir ve yalnızca yanıt üretimi için API çağrısı gerekir
  • Temel çalışma akışı, python indexer.py ile PDF'leri işleyip vektör veritabanı oluşturmak ve python chatbot.py ile etkileşimli sorgu arayüzünü başlatmaktır
    • PDF klasörü ve indeksin kaydedileceği konum komut satırı argümanlarıyla belirtilebilir
    • Koleksiyona yeni PDF eklendiğinde yalnızca indeksleyiciyi yeniden çalıştırmak yeterlidir
  • Çalıştırma gereksinimleri Python 3.8 ve üzeri ile OpenAI API anahtarıdır; bu anahtar .env dosyasındaki OPENAI_API_KEY değeriyle ayarlanır

1 yorum

 
GN⁺ 2023-07-10
Hacker News yorumları
  • Bu tür fikirleri kopyalayan uygulamaların neredeyse hepsinin OpenAI zorunlu olması en sinir bozucu kısım
    Artık bunun bitmesini istiyorum
    OpenAI veya bulut gerektiren seçenekler, “teknik olarak mümkün ama epey uğraştıran gelişmiş ayar” düzeyinde olmalı; varsayılan bunun tersi olursa kullanıcı sayısı çok daha fazla olur
    Bu tür uygulamaların varsayılanı tamamen yerelde çalışmak olmalı ve .toml dosyasındaki tek bir string değişikliğiyle istenen Hugging Face modeliyle değiştirilebilmesi bence daha iyi olur
    Gerçekten OpenAI gerekirse Docker secret ya da pass zinciri gibi anahtar yönetimi yöntemleri ve ayar değişiklikleriyle mümkün hale getirilebilir
    Varsayılan yerel öncelikli olmalı; mümkün olan en fazla işlem yerelde yapılmalı ve ancak kullanıcı gerçekten isterse derlenmiş promptun çok az sayıdaki token’ı OpenAI’ye gönderilmeli

    • Rekabet etmek zor. Küçük bir işletmenin chatbot için 10 bin istek işlediğini varsayarsak seçenekler ya OpenAI’ye ayda 50 dolardan az ödemek, ya bulut GPU’larını yönetip bir makine öğrenimi mühendisi işe alarak ayda 1000 doların üzerinde harcamak, ya da birinin masasının altında yerel bir 4090 tutup güvenilirlik olmadan 1500 dolarlık sabit maliyete katlanmak
      Daha büyük şirketlerin ölçeklenebilirliğe ihtiyacı var ve yine de OpenAI fiyatlarıyla rekabet etmek zor
      Girişim odaklı biri, istek başına ücretlendirme, ince ayar ve vektör depolama sunan bir OpenLLaMA girişimi kurabilir
    • Başka LLM’lerle basit deneyler değil de gerçekten kullanılabilir işler yapanların ne yaptığını merak ediyorum
      Şaşkınlık aşamasını çoktan geçtik; artık işleri verimli biçimde bitirmek istiyorum
      Şimdiye kadar test ettiklerim içinde işi belli bir istikrarla halletmeyi sağlayan tek model GPT-4 oldu
      Sorun benim acemiliğim mi, yoksa HN tarzı bir temennicilikle diğer LLM’lerin gerçek işlerde gereken kalite, tutarlılık ve güvenilirlik açısından çok daha iyi olduğu mu söyleniyor, bilmiyorum
    • Sanki gerçek bir ürün çıkarmak için değil de özgeçmişe OpenAI deneyimini kanıtlayan tek satırlık bir madde eklemek için yapılmış gibi görünüyor
      OpenAI’nin kendi sertifikasyon programı olmamasının sonucu bu diye tahmin ediyorum
    • https://mudler.pm/posts/smart-slackbot-for-teams/ üzerine LocalAI eklemek olmaz mı?
    • Burada kullanılan OpenAI “çöpü” sadece embedding üretimi için
      Şu anda OpenAI, kişisel projeler için en iyi ve en ucuz embedding seçeneklerinden birini sunuyor
      Vektörler oluşturulduktan sonra istenirse buluttan tamamen çıkılabilir
      LangChain bu sıkıntı noktasını soyutladığı için embedding üreticisi de istenildiği zaman değiştirilebilir
      Geri kalan kısımlar zaten Hugging Face kullanıyor ve prompt destekleyen GPT-2 dışındaki başka modellerle değiştirilebilir
  • Veriyi gizli tutmak ve üçüncü taraflara sızdırmamak gerekir. privateGPT gibi bir şey kullanılabilir. GitHub’da 32 bin yıldızı var
    Anahtar bana ait değilse veri de bana ait değildir
    “Belgelerinizle GPT gücüyle özel olarak etkileşin, %100 gizlilik, veri sızıntısı yok”[0]
    [0] https://github.com/imartinez/privateGPT

    • OpenAI ürünlerinden belirgin biçimde daha zayıf ve bu modeller sanki artık tamamen birbirinin yerine geçebiliyormuş gibi konuşulmasından bıktım
      Henüz öyle değil
    • Bunun tüm e-postaları ve sohbet günlüklerini içine atıp konuşacak kadar sağlam olup olmadığını merak ediyorum
      Yakın tarihli günlüklerle ilgili soruları anlamak için bağlam çıkarabilir mi?
    • Intel Mac’te nasıl çalıştığını merak ediyorum. 6 çekirdekli i9 kullanıyorum
      Henüz M serisine geçemedim; GPU’lu bir bulut bilişim ortamında çalıştırmak daha mı mantıklı diye düşünüyorum
    • Confluence ile birlikte kullanılabilse harika olurdu
      Belgeleri yazıp sonra sadece içerikleri hakkında soru sormak yeterli olurdu
    • %100 gizlilik iddiası biraz şüpheli
      Güç sahiplerinin yerel LLM’lere karşı sergilediği paranoya düzeyini görünce, Windows telemetrisinin insanların yerel LLM’lerle ne yaptığını raporluyor olması bana hiç şaşırtıcı gelmez
      Aksini düşünenlerin fazla saf olduğunu düşünüyorum
  • Kişisel verilerimi OpenAI’ye mi gönderiyor? Bu ciddi bir sorun değil mi?
    Verideki tüm hassas kişisel bilgileri temizlemeden bu bana pek akıllıca görünmüyor. Ben mi bir şeyi kaçırıyorum?

  • README çok kafa karıştırıcı
    GPT-2 tokenizer kullandığı ve GPT-2’yi embedding modeli olarak kullandığı yazıyor ama koda bakınca varsayılan LangChain OpenAIEmbeddings ile OpenAI LLM kullanılıyor gibi görünüyor
    Bunlar sırasıyla text-embedding-ada-002 ve text-davinci-003 değil mi?
    GPT-2’nin burada nasıl devreye girdiğini hiç anlamadım

    • Kullanılan embedding modeli, varsayılan OpenAI API embedding modeli olan text-embedding-ada-002
      GPT-2 sadece tokenizasyon aşamasında token uzunluğunu verimli biçimde hesaplamak için kullanılıyor
  • Bunu barındırılan bir sürüm olarak sunan bir şirket var mı?
    Tüm verilerimi verip soru sorabileceğim küçük bir yapay zekayı epey istiyorum

  • Anlamıyorum. GPT-2, OpenAI'nin herkese açık az sayıdaki modellerinden biri, yani yerelde doğrudan çalıştırılabiliyor; peki neden bu amaç için API kullanılıyor?
    https://github.com/openai/gpt-2

    • GPT-2 kullanılmıyor. README hatalı
      from langchain.embeddings import OpenAIEmbeddings kullanılıyor ve bu, OpenAI embedding API'si olan text-embedding-ada-002
      GPT-2'nin kullanıldığı tek yer GPT2TokenizerFast.from_pretrained("gpt2"); burada da LangChain'in RecursiveCharacterTextSplitter() yardımcı aracında token sayısını hesaplayan uzunluk fonksiyonu olarak kullanılıyor
      Bu da pek mantıklı değil. Burada neden GPT-2 tokenizer'ı kullanıldığını anlamıyorum
      Sadece karakter saymak ya da .split() tabanlı olarak kelime saymak da yeterli olur. Burada nasıl saydığınız o kadar önemli değil
    • Kullanılan embedding modeli, varsayılan OpenAI API embedding modeli olan text-embedding-ada-002
      GPT-2 ise yalnızca tokenizasyon aşamasında token uzunluğunu verimli biçimde hesaplamak için kullanılıyor
      README'yi bu bilgiyi doğru yansıtacak şekilde güncelledim
    • GPT-4'ün sorulara GPT-2'den daha iyi yanıt vereceğini varsayıyorum
  • Tüm verilerimde arama yapma ihtiyacı duymayan tek kişi ben miyim? Bunun kullanım senaryosu ne?

    • Bir kullanım senaryosu örneği şöyle:
      İş yerinde çeşitli yatırım konularını tartışan bir grubumuz var ve organizatörün çevresi geniş olduğu için her hafta dışarıdan bir konuşmacı getirmeye çalışıyor. Oldukça öğretici oluyor
      Her sunumun ham notları elimizde var; amaç bu notları gözden geçirip bilgiyi düzgünce düzenleyerek wiki benzeri bir yapıya dönüştürmekti
      Başlayalı 3 yıl oldu ama hâlâ zaman ayıramadım; gerçekçi bakınca muhtemelen bundan sonra da ayıramayacağım
      Bu notlarda bilgi bulmak için metin araması kullanabiliyorum ama arama dizgesine fazla duyarlı olduğu için çoğu zaman istediğimi bulamıyorum
      Bilgi birden fazla dosyaya dağılmışsa tüm arama sonuçlarını açıp tek tek gözden geçirmek gerekiyor
      Böyle bir teknolojiyle tüm notları bir vektör veritabanına koyup, ihtiyacınız olan şeyi doğal dille sorabilirsiniz
      Yerel sistem soruyu yorumlar, veritabanında en ilgili belgeleri bulur ve ardından soruyu ve arama sonuçlarını OpenAI'ye göndererek soruyu yorumlayıp yanıtı notların içinden bulmasını sağlar
      Daha önce LangChain ile bir kavram kanıtı yaptım ve çalıştı. Bir keresinde iki farklı sunuma dağılmış bilgileri birleştirip yanıt verdiğinde gerçekten bir “ampul yandı” anı yaşamıştım
      Sorun şu ki ayarlanabilecek çok fazla parametre var ve sistem performansını değerlendirmek için hangi yöntem ya da metrikleri kullanacağımı henüz düşünemedim. Tavsiyeniz olursa sevinirim
      Bu notlarda kişisel veri yok, dolayısıyla gizlilik sorunu da yok
      20 yılı aşkın e-postalarım için de benzer bir şey kurmak istedim ama gizlilik nedeniyle yapmadım. Ayrıca notmuch adlı bir e-posta indeksleyicisi kullandığım için yapay zekaya duyulan ihtiyaç da o kadar büyük değil
      Ama kişisel olmayan başka notlar için, bu sistemin oldukça iyi çalışmasını sağlayabilirseniz gerçekten hayat kurtarıcı olabilir
      Yıllar boyunca çok fazla farklı konuda not aldım ve bunları iyi organize etmek zorunda olmamak gerçek para cinsinden değer taşıyor
      Bırakın sadece notlarımı yazayım, ihtiyacım olanı yapay zeka benim için bulsun
    • Bazen veri vardır ama nerede olduğunu bilmezsiniz
      Bazen verinin nerede olduğunu bilirsiniz ama miktarı çok fazladır ve ihtiyacınız olan şey sadece bir şey hakkında hızlı bir açıklamadır
      Bazen de birden fazla kaynaktan çok fazla veri vardır ve sonunda istediğiniz şey, çoğunun ya da tamamının üzerinde uzlaştığı noktaların özeti veya birbirlerinden nasıl ayrıldıklarının özeti olur
      Kullanım senaryosu çok ve bence bu tür işleri ele alıştaki mevcut yöntemlerimize alışık olduğumuz için, insan kendisi derine inip olasılıkları görene kadar faydası çoğu zaman bir “ampul yandı” anı olarak gelmiyor
      Kapsam oldukça geniş. Benim kişisel olarak üzerinde çalıştığım proje de bunun bir varyasyonu: yıllara yayılan kişisel notlarımı ve günlüklerimi ekleyip öz değerlendirme ve kişisel gelişim için sorgulamak
      Bu alanın genelinde çok fazla potansiyel olduğunu düşünüyorum
  • Milvus, Quickwit ve Pinecone'un nasıl karşılaştırıldığını bilen var mı?
    Yerel işletmelere yönelik LLM, ince ayar/vektör arama ve chatbot danışmanlığı fırsatları olup olmadığını düşünüyordum
    Dosyayı sürükleyip bırakarak kolayca kişiselleştirilmiş çıkarım alabileceğiniz bir araç da yapmak istiyorum
    Yakın zamanda LinkedIn akışımda https://gpt-trainer.com/ çıktı, ayrıca belgeler için birkaç tane daha gördüm
    https://www.explainpaper.com/
    https://www.konjer.xyz/
    Fiyat rekabetine girmek istemiyorum
    3090 üzerinde yerel açık kaynaklı bir LLM sunmak da havalı olurdu ama ölçeklenebilir olmaz
    Başka ince ayar veya vektör arama bağlamı girişimleri gördünüz mü?

    • Pinecone ve Milvus, vektör depolama ve arama bileşenlerinde FAISS kullanmanın alternatifi olabilir
      Gömme farkının, depolama/arama alternatifleri arasındaki farktan çok gömme üretiminde ne kullandığınıza bağlı olarak daha büyük hissedileceğini düşünüyorum
      Örneğin buradakileri https://news.ycombinator.com/item?id=36649579 OpenAI embeddings API yerine kullanmak gibi
      Gömme depolama/arama alternatifleri arasındaki farklar olarak, büyük ölçekte performans, maliyet, kişisel tercih ya da geliştirici deneyimi dışında pek bir şey aklıma gelmiyor
      Quickwit'i ilk kez duyuyorum; siteye hızlıca baktım, bir vektör deposu gibi görünmüyor ve muhtemelen daha az ilgili
      Özel ChatGPT oluşturma araçları için benim listeme bakabilirsiniz: https://llm-utils.org/List+of+tools+for+making+a+%22ChatGPT+...
      Hizmet olarak ince ayar tarafında, işletmelere yönelik Lamini AI var
      Diğer bir embedding girişimi olarak da Weaviate var
    • Sadece numpy ile basit bir vektör DB yapıyorum: https://github.com/sdan/vlite
      Bence Milvus, Quickwit ve Pinecone daha çok kurumsal kullanıma uygun ve kullanmaları zor
    • Bence qdrant daha iyi
  • Daha hızlı ve daha doğru yerel embedding modelleri varken neden OpenAI bağımlılığı kullanıldığını anlamıyorum

    • Hangi modeller?
  • Hassas kurumsal veriler ile LLM arasında güvenlik katmanı görevi gören bir şirkette çalışıyorum
    Modelin HF, ChatGPT ya da Bard olması; ortamın konuşma verisi, PDF veya Notion gibi bir bilgi tabanı olması fark etmiyor
    Hassas verileri gizleyerek riskli kullanımı engelliyor, aynı zamanda doğruluk kontrolü de yapıyoruz
    Aradığınız şey buysa tanıştırabilirim. tothepoint.tech