Files
chat-llamaindex/app/api/chat/engine/generate.ts
T
Thuc Pham 5c16a343ea feat: use create-llama chat session (#94)
---------
Co-authored-by: Marcus Schiesser <mail@marcusschiesser.de>
2024-06-19 22:17:44 +07:00

46 lines
1.4 KiB
TypeScript

import { VectorStoreIndex } from "llamaindex";
import { storageContextFromDefaults } from "llamaindex/storage/StorageContext";
import * as dotenv from "dotenv";
import { getDocuments } from "./loader";
import { initSettings } from "./settings";
import { STORAGE_CACHE_DIR } from "./shared";
// Load environment variables from local .env.development.local file
dotenv.config({ path: ".env.development.local" });
async function getRuntime(func: any) {
const start = Date.now();
await func();
const end = Date.now();
return end - start;
}
async function generateDatasource() {
const datasource = process.argv[2];
if (!datasource) {
console.error("Please provide a datasource as an argument.");
process.exit(1);
}
console.log(`Generating storage context for datasource '${datasource}'...`);
// Split documents, create embeddings and store them in the storage context
const ms = await getRuntime(async () => {
const storageContext = await storageContextFromDefaults({
persistDir: `${STORAGE_CACHE_DIR}/${datasource}`,
});
const documents = await getDocuments();
await VectorStoreIndex.fromDocuments(documents, {
storageContext,
});
});
console.log(`Storage context successfully generated in ${ms / 1000}s.`);
}
(async () => {
initSettings();
await generateDatasource();
console.log("Finished generating storage.");
})();