diff options
author | Grail Finder <wohilas@gmail.com> | 2025-01-05 20:51:31 +0300 |
---|---|---|
committer | Grail Finder <wohilas@gmail.com> | 2025-01-05 20:51:31 +0300 |
commit | b822b3a1613ef7f1c9ed8fa5aaddfaffbfc513a4 (patch) | |
tree | afa89e8eb8916e5e970cac9fb70eaddd97c12ae6 /bot.go | |
parent | 4736e43631ed21fd14741daa1dde746687d330fa (diff) |
Refactor: rag to sep package
Diffstat (limited to 'bot.go')
-rw-r--r-- | bot.go | 21 |
1 files changed, 16 insertions, 5 deletions
@@ -5,6 +5,7 @@ import ( "bytes" "elefant/config" "elefant/models" + "elefant/rag" "elefant/storage" "encoding/json" "fmt" @@ -33,6 +34,7 @@ var ( defaultStarter = []models.RoleMsg{} defaultStarterBytes = []byte{} interruptResp = false + ragger *rag.RAG ) // ==== @@ -129,26 +131,34 @@ func chatRagUse(qText string) (string, error) { for i, q := range questionsS { questions[i] = q.Text } - respVecs := []*models.VectorRow{} + respVecs := []models.VectorRow{} for i, q := range questions { - emb, err := lineToVector(q) + emb, err := ragger.LineToVector(q) if err != nil { logger.Error("failed to get embs", "error", err, "index", i, "question", q) continue } - vec, err := searchEmb(emb) + // e := &models.EmbeddingResp{ + // Embedding: emb, + // } + // vecs, err := ragger.SearchEmb(e) + vecs, err := store.SearchClosest(emb) if err != nil { - logger.Error("failed to get embs", "error", err, "index", i, "question", q) + logger.Error("failed to query embs", "error", err, "index", i, "question", q) continue } - respVecs = append(respVecs, vec) + respVecs = append(respVecs, vecs...) // logger.Info("returned vector from query search", "question", q, "vec", vec) } // get raw text resps := []string{} + logger.Info("sqlvec resp", "vecs", respVecs) for _, rv := range respVecs { resps = append(resps, rv.RawText) } + if len(resps) == 0 { + return "No related results from vector storage.", nil + } return strings.Join(resps, "\n"), nil } @@ -326,6 +336,7 @@ func init() { if store == nil { os.Exit(1) } + ragger = rag.New(logger, store, cfg) // https://github.com/coreydaley/ggerganov-llama.cpp/blob/master/examples/server/README.md // load all chats in memory if _, err := loadHistoryChats(); err != nil { |