From 0de5ea0b049a25b5c45bdc2cbd704ecd04ad52f5 Mon Sep 17 00:00:00 2001 From: n4ze3m Date: Sat, 6 Apr 2024 14:02:22 +0530 Subject: [PATCH] Add d3-dsv and @types/d3-dsv dependencies --- bun.lockb | Bin 404730 -> 406530 bytes package.json | 2 + .../Option/Knowledge/SelectedKnwledge.tsx | 4 +- src/libs/process-knowledge.ts | 30 +++++++ src/loader/csv.ts | 84 ++++++++++++++++++ src/loader/txt.ts | 57 ++++++++++++ 6 files changed, 175 insertions(+), 2 deletions(-) create mode 100644 src/loader/csv.ts create mode 100644 src/loader/txt.ts diff --git a/bun.lockb b/bun.lockb index 15224d079cec3c254eef016d4bc45072dc3611d1..8342534ba49b18c209848f409b473886235e7529 100644 GIT binary patch delta 73367 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

8${%*Tm1A#QoJ#@+P#-WeO02j1#fgv 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 diff --git a/package.json b/package.json index 1988dfa..2d445ec 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "antd": "^5.13.3", "axios": "^1.6.7", "cheerio": "^1.0.0-rc.12", + "d3-dsv": "2", "dayjs": "^1.11.10", "html-to-text": "^9.0.5", "i18next": "^23.10.1", @@ -55,6 +56,7 @@ "devDependencies": { "@plasmohq/prettier-plugin-sort-imports": "4.0.1", "@types/chrome": "0.0.259", + "@types/d3-dsv": "^3.0.7", "@types/html-to-text": "^9.0.4", "@types/node": "20.11.9", "@types/pubsub-js": "^1.8.6", diff --git a/src/components/Option/Knowledge/SelectedKnwledge.tsx b/src/components/Option/Knowledge/SelectedKnwledge.tsx index c217465..b7eaa2d 100644 --- a/src/components/Option/Knowledge/SelectedKnwledge.tsx +++ b/src/components/Option/Knowledge/SelectedKnwledge.tsx @@ -12,9 +12,9 @@ export const SelectedKnowledge = () => { {"/"} -

+
- + {knowledge.title} diff --git a/src/libs/process-knowledge.ts b/src/libs/process-knowledge.ts index d98cf17..eeff415 100644 --- a/src/libs/process-knowledge.ts +++ b/src/libs/process-knowledge.ts @@ -7,6 +7,8 @@ import { import { OllamaEmbeddings } from "@langchain/community/embeddings/ollama" import { RecursiveCharacterTextSplitter } from "langchain/text_splitter" import { PageAssistVectorStore } from "./PageAssistVectorStore" +import { PageAssisCSVUrlLoader } from "@/loader/csv" +import { PageAssisTXTUrlLoader } from "@/loader/txt" export const processKnowledge = async (msg: any, id: string): Promise => { console.log(`Processing knowledge with id: ${id}`) @@ -38,6 +40,34 @@ export const processKnowledge = async (msg: any, id: string): Promise => { }) let docs = await loader.load() const chunks = await textSplitter.splitDocuments(docs) + await PageAssistVectorStore.fromDocuments(chunks, ollamaEmbedding, { + knownledge_id: knowledge.id, + file_id: doc.source_id + }) + } else if (doc.type === "csv" || doc.type === "text/csv") { + const loader = new PageAssisCSVUrlLoader({ + name: doc.filename, + url: doc.content, + options: {} + }) + + let docs = await loader.load() + + const chunks = await textSplitter.splitDocuments(docs) + await PageAssistVectorStore.fromDocuments(chunks, ollamaEmbedding, { + knownledge_id: knowledge.id, + file_id: doc.source_id + }) + } else if (doc.type === "txt" || doc.type === "text/plain") { + const loader = new PageAssisTXTUrlLoader({ + name: doc.filename, + url: doc.content + }) + + let docs = await loader.load() + + const chunks = await textSplitter.splitDocuments(docs) + await PageAssistVectorStore.fromDocuments(chunks, ollamaEmbedding, { knownledge_id: knowledge.id, file_id: doc.source_id diff --git a/src/loader/csv.ts b/src/loader/csv.ts new file mode 100644 index 0000000..b93f1e1 --- /dev/null +++ b/src/loader/csv.ts @@ -0,0 +1,84 @@ +import { dsvFormat } from "d3-dsv" + +import { BaseDocumentLoader } from "langchain/document_loaders/base" +import { Document } from "@langchain/core/documents" +export interface WebLoaderParams { + url: string + name: string + options: { + column?: string + separator?: string + } +} + +export class PageAssisCSVUrlLoader + extends BaseDocumentLoader + implements WebLoaderParams +{ + pdf: { content: string; page: number }[] + url: string + name: string + options: { column?: string; separator?: string } + + constructor({ url, name }: WebLoaderParams) { + super() + this.url = url + this.name = name + this.options = {} + } + + public async parse(raw: string): Promise { + const { column, separator = "," } = this.options + const psv = dsvFormat(separator) + + let parsed = psv.parseRows(raw.trim()) + + if (column !== undefined) { + if (!parsed[0].includes(column)) { + throw new Error(`ColumnNotFoundError: Column ${column} not found`) + } + + const columnIndex = parsed[0].indexOf(column) + return parsed.map((row) => row[columnIndex]!) + } + + const headers = parsed[0] + parsed = parsed.slice(1) + + return parsed.map((row) => + row.map((value, index) => `${headers[index]}: ${value}`).join("\n") + ) + } + async load(): Promise>[]> { + const res = await fetch(this.url) + + if (!res.ok) { + throw new Error(`Failed to fetch ${this.url}`) + } + + const raw = await res.text() + + const parsed = await this.parse(raw) + let metadata = { source: this.name, type: "csv" } + parsed.forEach((pageContent, i) => { + if (typeof pageContent !== "string") { + throw new Error( + `Expected string, at position ${i} got ${typeof pageContent}` + ) + } + }) + return parsed.map( + (pageContent, i) => + new Document({ + pageContent, + metadata: + parsed.length === 1 + ? metadata + : { + ...metadata, + line: i + 1 + } + }) + ) + } +} diff --git a/src/loader/txt.ts b/src/loader/txt.ts new file mode 100644 index 0000000..4b92453 --- /dev/null +++ b/src/loader/txt.ts @@ -0,0 +1,57 @@ +import { BaseDocumentLoader } from "langchain/document_loaders/base" +import { Document } from "@langchain/core/documents" +export interface WebLoaderParams { + url: string + name: string +} + +export class PageAssisTXTUrlLoader + extends BaseDocumentLoader + implements WebLoaderParams +{ + pdf: { content: string; page: number }[] + url: string + name: string + + constructor({ url, name }: WebLoaderParams) { + super() + this.url = url + this.name = name + } + + public async parse(raw: string): Promise { + return [raw] + } + async load(): Promise>[]> { + const res = await fetch(this.url) + + if (!res.ok) { + throw new Error(`Failed to fetch ${this.url}`) + } + + const raw = await res.text() + + const parsed = await this.parse(raw) + let metadata = { source: this.name, type: "csv" } + parsed.forEach((pageContent, i) => { + if (typeof pageContent !== "string") { + throw new Error( + `Expected string, at position ${i} got ${typeof pageContent}` + ) + } + }) + return parsed.map( + (pageContent, i) => + new Document({ + pageContent, + metadata: + parsed.length === 1 + ? metadata + : { + ...metadata, + line: i + 1 + } + }) + ) + } +}