Skip to content

Commit

Permalink
Refactor document search functionality using
Browse files Browse the repository at this point in the history
langchain framework
  • Loading branch information
fuzzbin committed Nov 14, 2023
1 parent f5d8ca6 commit d28affc
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 8 deletions.
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
# Eksperimentell sandkasse for bruk av språkmodeller til dokument-søk

Dette repoet er en eksperimentell sandkasse for å teste ut bruk av språkmodeller til å søke i dokumenter. Det er en POC for å teste ut funksjonalitet og muligheter. Det er ikke ment for produksjon. Funksjonene finnes i fila ```lmDocSearchUtils.js```. For testing så kan de kalles ```index.js```
Dette repoet er en eksperimentell sandkasse for å teste ut bruk av språkmodeller til å gjøre smarte søke i dokumenter. Innholdet her er en POC for å teste funksjonalitet og muligheter og er ikke ment for produksjon.

Funksjonene benytter seg av funksjonalitet fra rammeverket [langchain](https://js.langchain.com/docs/get_started/introduction)
Hovedprogrammet finnes i fila ```lmDocSearchUtils.js```. For å test så kan man kalle funksjonen(e) fra filen```index.js```

Funksjonen(e) er bygget ved hjelp av rammeverket [langchain](https://js.langchain.com/docs/get_started/introduction) som er laget for å gjøre det enkelt å bruke språkmodeller. Koden i dette repoet bruker samme API som chatVTFK med egen datavatale.

### Slik kommer du i gang

Expand Down
4 changes: 2 additions & 2 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { askDok } from "./llmDocSearchUtils.js";

// console.log(askDok("html", "https://snl.no/Gro_Harlem_Brundtland", "I hvilke perioder var Gro statsminister?"));
console.log(askDok("md", "docs/delingsinfo.md", "Hva skjer med eposten min?"))
console.log(askDok("html", "https://snl.no/Vestfold_og_Telemark", "Hvor mange hytter finnes det i fylket?"));
// console.log(askDok("md", "docs/delingsinfo.md", "Kan jeg arkivere filer fra Teams?"))
9 changes: 5 additions & 4 deletions llmDocSearchUtils.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@ import dotenv from "dotenv";
dotenv.config();

// Global kontekst som legges til på alle spørringer
const kontekst =
"Du skal alltid svare på en enkel og forståelig måte på norsk. Oppgi datoer, frister og kontaktpersoner hvis det er tilgjengelig. På slutten av responsen skal du alltid skrive teksten: 'Husk at responsen fra denne chatboten kan være upresis eller faktisk feil. Det er derfor viktig at du sjekker informasjonen du får her med med informasjon fra kilden.'";
const kontekst = "Du skal alltid svare på en enkel og forståelig måte på norsk. Oppgi datoer, frister og kontaktpersoner hvis det er tilgjengelig. På slutten av responsen skal du alltid skrive teksten: 'Husk at responsen fra denne chatboten kan være upresis eller faktisk feil. Det er derfor viktig at du sjekker informasjonen du får her med med informasjon fra kilden.'";

export const askDok = async (dokType, dokPath, question) => {
let splitDocs
Expand All @@ -38,6 +37,7 @@ export const askDok = async (dokType, dokPath, question) => {
splitDocs = await sequence.invoke(docs);
}

// Lager en vectorstore fra dokumentene
const vectorstore = await MemoryVectorStore.fromDocuments(splitDocs, new OpenAIEmbeddings());
const model = new ChatOpenAI({ modelName: "gpt-3.5-turbo-1106", temperature: 0 });
const retriever = MultiQueryRetriever.fromLLM({
Expand All @@ -46,10 +46,11 @@ export const askDok = async (dokType, dokPath, question) => {
queryCount: 3,
verbose: false,
});
const retrievedDocs = await retriever.getRelevantDocuments(question);

// Uthenting av relevante "chunks" og spørring mot disse. Spørring gjentas 'queryCount' ganger
const retrievedDocs = await retriever.getRelevantDocuments(question);
const chain = loadQAStuffChain(model);
console.log("Starter 'chain'...");
console.log("Starter 'chainen'...");
const res = await chain.call({
input_documents: retrievedDocs,
question: kontekst + question,
Expand Down

0 comments on commit d28affc

Please sign in to comment.