”AI” & Retrieval-Augmented Generation

Det är väl ingen som missat snacket om ”AI”. Texterna här är människoskrivna, WordPress ”AI-Assistant” har föreslagit saker såsom att sammanfattningar skulle förbättra texten. Så det har jag skrivit på de olika sidorna. Men bilden ovan är gjord med DALL-E 3. Som trots upprepade tydliga instruktioner att låta bli väldigt gärna (9 av 10 försök) ville göra ångloks-bilder. Det är tydligen vad ”Train” är.

⚠️ Detta inlägg handlar mer programmering än tågresor. Läs vidare på egen risk! ⚠️

För att bekanta mig med ”Retrieval-Augmented Generation” och kunna kombinera egen data med en Large Language Model (LLM) och ställa frågor med naturligt språk mot denna data (istället för bara vad LLM:erna hittat på nätet) så gjorde jag ett experiment.

  • Samlade ihop texten från de olika sidorna till en textmassa (export från WordPress och lite Python-kod för att ta bort onödig WordPress-data). Det blev ca 200 kb text.
  • Jag sparade det i en Vector-databas (Chroma)
  • Ställer frågor mot OpenAI:s API (modell ”gpt-4-turbo”) med min databas som frågekontext
  • Ett API med FastApi för att inte ladda databasen för varje fråga.

Exempel:

Fråga: hur köper jag platsbiljetter för tåg i Frankrike?
För att köpa platsbiljetter för tåg i Frankrike kan du göra det på flera sätt:

  1. Online på interrail.eu: Du kan köpa platsbiljetter för både inrikes resor inom Frankrike och för internationella tåg som korsar gränser till exempelvis Tyskland.
  2. På stationer i Frankrike: SNCF, det franska nationella järnvägsbolaget, säljer platsbiljetter på bemannade stationer men inte online för Interrail.
  3. Via telefon från SNCF: Du kan också ringa till SNCF för att boka och de skickas med e-post.
  4. Via Belgiska SNCB: För köp på SNCB krävs ett ”pass cover number” som du kan skapa på interrail.eu.

Kom ihåg att vissa tågtyper som TER (regionala tåg) i vissa regioner inte kräver platsbiljetter och kan inte bokas i förväg.

Det ser bra ut.

Men det här var inte lika bra med en dags väntan i Hamburg på första förslaget.

Fråga: hur reser jag bäst till Italien
För att resa till Italien med tåg från Sverige kan du börja din resa i Hamburg, Tyskland, på morgonen. Från Hamburg kan du ta ett direkt nattåg till Basel, Schweiz, och därefter fortsätta med regionaltåg till Milano, Italien. Alternativt kan du ta ett dagtåg från Hamburg till Chur, Schweiz, och övernatta där. Nästa dag kan du resa över Berninapasset till Tirano, Italien, och sedan vidare till Milano. Dessa rutter erbjuder både vackra landskap och effektiva tågförbindelser till Italien.

Finns inte data är den instruerad att inte hitta på saker.

Fråga: Hur tar jag tåget till Ukraina
Jag har tyvärr ingen information om hur man tar tåget till Ukraina i de dokument som tillhandahållits.

Input/output

curl -X 'POST' \
  'http://127.0.0.1:8000/ai' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "query_string": "hur reser jag till Italien?"
}'
{
  "answer": "För att resa till Italien med tåg kan du använda flera olika rutter beroende på varifrån du startar din resa. Här är några exempel:\n\n1. **Från Sverige via Tyskland**: Ta ett nattåg från Sverige till Berlin och fortsätt sedan till München. Från München kan du ta ett direkt tåg till Italien, till exempel till städer som Verona eller Milano.\n\n2. **Från Danmark via Tyskland**: Starta i Hamburg och ta ett EuroCity-tåg som går direkt till Verona genom Österrike, över Brennerpasset.\n\n3. **Från Schweiz**: Du kan resa från Zürich till Milano med direkttåg som erbjuds av både schweiziska SBB och italienska Trenitalia.\n\nNär du är i Italien kan du fortsätta din resa med lokala tåg eller höghastighetståg beroende på ditt slutmål. Tänk på att platsreservation kan vara obligatorisk på vissa snabbtåg i Italien. Du kan boka dessa platsbiljetter via ÖBB eller direkt på italienska tågbolagets webbplatser som Trenitalia eller Italo."
}

Slutsats

Det blir välformatterade svar, men inte alltid helt korrekt. Som vanligt. Eftersom kontexten är texterna här på sajten kommer den i alla fall inte att föreslå flyg eller liknande när jag frågar efter ”bästa vägen”. Intressant experiment, att använda text jag skrivit själv gör det mycket lättare att bedöma ”sanningshalten”, men jag skall prova lite mer och se om texterna kan bli entydigare innan jag funderar på att göra nåt mer. Den roliga prototypen är gjord, att göra det till något offentligt är mycket mer jobb. Men texterna får användas om nån annan vill göra nåt. Hör gärna av dig isåfall

WordPress AI-Assistant

Den sammanfattar inlägget så här:

The content provided is in Swedish. It effectively explains an experiment using a Vector database and FastAPI to retrieve information through OpenAI’s API. The examples given are helpful in understanding the concept. The blog post also shares examples of the input/output and concludes with a reflection on the experiment. Here are some suggestions to enhance the content:

1. Consider providing a brief introduction to contextualize the experiment for readers who may be unfamiliar with ”Retrieval-Augmented Generation” and Large Language Models (LLM).

2. Add a section to explain the potential implications or applications of the experiment’s results.

3. Include visual aids or diagrams to illustrate the process, enhancing reader engagement and comprehension.

Overall, the post provides valuable insights, and the suggestions above can further improve its readability and impact.


Upptäck mer från Interrail-info på svenska

Prenumerera för att få de senaste inläggen till din e-post.

Designa en webbplats som denna med WordPress.com
Kom igång