Krotos Modules 3
Loading...
Searching...
No Matches
TextToFile.h
Go to the documentation of this file.
1#pragma once
2
3namespace krotos
4{
5
6// text to file embeddings file name
7constexpr char textToFileEmbeddingsFilename[] = ".ttfEmbCache.json";
8
9class TextToFile : public Thread
10{
11 public:
12 TextToFile();
14 std::vector<File> search(String query, std::size_t k = 25);
15
16 private:
17 void run() override;
18 File embeddingsFilePath(String filename) const;
19
20 bool saveToFile(File file, const std::map<String, std::vector<float>>& data)
21 {
22 DynamicObject::Ptr dataset(new DynamicObject());
23 Array<var> rows;
24
25 for (const auto& element : data)
26 {
27 const auto fileName = element.first;
28 const auto embeddings = element.second;
29
30 DynamicObject::Ptr metadata(new DynamicObject());
31
32 metadata->setProperty("fileName", var(fileName));
33
34 Array<var> embeddingsArray;
35 for (auto value : embeddings)
36 embeddingsArray.add(value);
37 metadata->setProperty("embeddings", embeddingsArray);
38
39 rows.add(metadata.get());
40 }
41 dataset->setProperty("FileNameEmbeddings", rows);
42
43 FileOutputStream stream(file);
44 if (stream.openedOk())
45 {
46 // overwrite an existing file
47 stream.setPosition(0);
48 stream.truncate();
49 JSON::writeToStream(stream, dataset.get());
50 return true;
51 }
52
53 return false;
54 }
55
56 std::map<String, std::vector<float>> readFromFile(File file)
57 {
58 assert(file.existsAsFile());
59
60 std::map<String, std::vector<float>> data;
61
62 auto json = JSON::parse(file);
63 var result = json.getProperty(Identifier("FileNameEmbeddings"), 0);
64 for (int i = 0; i < result.size(); ++i)
65 {
66 auto fileName = result[i].getProperty(Identifier("fileName"), 0).toString();
67 var embeddingsArray = result[i].getProperty(Identifier("embeddings"), 0);
68
69 std::vector<float> embeddings;
70 for (int j = 0; j < embeddingsArray.size(); ++j)
71 embeddings.push_back(embeddingsArray[j]);
72
73 data[fileName] = embeddings;
74 }
75
76 return data;
77 }
78
81 std::vector<File> m_files;
82 SharedResourcePointer<UniversalCategorySystem> m_UCS;
83};
84
85} // namespace krotos
Definition KDTreeND.h:30
Definition SentenceTransformer.h:9
Definition TextToFile.h:10
void run() override
Definition TextToFile.cpp:11
bool saveToFile(File file, const std::map< String, std::vector< float > > &data)
Definition TextToFile.h:20
std::vector< File > m_files
Definition TextToFile.h:81
TextToFile()
Definition TextToFile.cpp:4
KDTreeND m_tree
Definition TextToFile.h:80
std::map< String, std::vector< float > > readFromFile(File file)
Definition TextToFile.h:56
SharedResourcePointer< UniversalCategorySystem > m_UCS
Definition TextToFile.h:82
SentenceTransformer m_sentenceTransformer
Definition TextToFile.h:79
File embeddingsFilePath(String filename) const
Definition TextToFile.cpp:132
~TextToFile()
Definition TextToFile.cpp:9
std::vector< File > search(String query, std::size_t k=25)
Definition TextToFile.cpp:85
Definition AirAbsorptionFilter.cpp:2
constexpr char textToFileEmbeddingsFilename[]
Definition TextToFile.h:7