|
import { RAG_API_BASE_URL } from '$lib/constants'; |
|
|
|
export const getRAGConfig = async (token: string) => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/config`, { |
|
method: 'GET', |
|
headers: { |
|
'Content-Type': 'application/json', |
|
Authorization: `Bearer ${token}` |
|
} |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
console.log(err); |
|
error = err.detail; |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
type ChunkConfigForm = { |
|
chunk_size: number; |
|
chunk_overlap: number; |
|
}; |
|
|
|
type ContentExtractConfigForm = { |
|
engine: string; |
|
tika_server_url: string | null; |
|
}; |
|
|
|
type YoutubeConfigForm = { |
|
language: string[]; |
|
translation?: string | null; |
|
}; |
|
|
|
type RAGConfigForm = { |
|
pdf_extract_images?: boolean; |
|
chunk?: ChunkConfigForm; |
|
content_extraction?: ContentExtractConfigForm; |
|
web_loader_ssl_verification?: boolean; |
|
youtube?: YoutubeConfigForm; |
|
}; |
|
|
|
export const updateRAGConfig = async (token: string, payload: RAGConfigForm) => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/config/update`, { |
|
method: 'POST', |
|
headers: { |
|
'Content-Type': 'application/json', |
|
Authorization: `Bearer ${token}` |
|
}, |
|
body: JSON.stringify({ |
|
...payload |
|
}) |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
console.log(err); |
|
error = err.detail; |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
export const getRAGTemplate = async (token: string) => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/template`, { |
|
method: 'GET', |
|
headers: { |
|
'Content-Type': 'application/json', |
|
Authorization: `Bearer ${token}` |
|
} |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
console.log(err); |
|
error = err.detail; |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res?.template ?? ''; |
|
}; |
|
|
|
export const getQuerySettings = async (token: string) => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/query/settings`, { |
|
method: 'GET', |
|
headers: { |
|
'Content-Type': 'application/json', |
|
Authorization: `Bearer ${token}` |
|
} |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
console.log(err); |
|
error = err.detail; |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
type QuerySettings = { |
|
k: number | null; |
|
r: number | null; |
|
template: string | null; |
|
}; |
|
|
|
export const updateQuerySettings = async (token: string, settings: QuerySettings) => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/query/settings/update`, { |
|
method: 'POST', |
|
headers: { |
|
'Content-Type': 'application/json', |
|
Authorization: `Bearer ${token}` |
|
}, |
|
body: JSON.stringify({ |
|
...settings |
|
}) |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
console.log(err); |
|
error = err.detail; |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
export const processDocToVectorDB = async (token: string, file_id: string) => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/process/doc`, { |
|
method: 'POST', |
|
headers: { |
|
Accept: 'application/json', |
|
'Content-Type': 'application/json', |
|
authorization: `Bearer ${token}` |
|
}, |
|
body: JSON.stringify({ |
|
file_id: file_id |
|
}) |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
error = err.detail; |
|
console.log(err); |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
export const uploadDocToVectorDB = async (token: string, collection_name: string, file: File) => { |
|
const data = new FormData(); |
|
data.append('file', file); |
|
data.append('collection_name', collection_name); |
|
|
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/doc`, { |
|
method: 'POST', |
|
headers: { |
|
Accept: 'application/json', |
|
authorization: `Bearer ${token}` |
|
}, |
|
body: data |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
error = err.detail; |
|
console.log(err); |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
export const uploadWebToVectorDB = async (token: string, collection_name: string, url: string) => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/web`, { |
|
method: 'POST', |
|
headers: { |
|
Accept: 'application/json', |
|
'Content-Type': 'application/json', |
|
authorization: `Bearer ${token}` |
|
}, |
|
body: JSON.stringify({ |
|
url: url, |
|
collection_name: collection_name |
|
}) |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
error = err.detail; |
|
console.log(err); |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
export const uploadYoutubeTranscriptionToVectorDB = async (token: string, url: string) => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/youtube`, { |
|
method: 'POST', |
|
headers: { |
|
Accept: 'application/json', |
|
'Content-Type': 'application/json', |
|
authorization: `Bearer ${token}` |
|
}, |
|
body: JSON.stringify({ |
|
url: url |
|
}) |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
error = err.detail; |
|
console.log(err); |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
export const queryDoc = async ( |
|
token: string, |
|
collection_name: string, |
|
query: string, |
|
k: number | null = null |
|
) => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/query/doc`, { |
|
method: 'POST', |
|
headers: { |
|
Accept: 'application/json', |
|
'Content-Type': 'application/json', |
|
authorization: `Bearer ${token}` |
|
}, |
|
body: JSON.stringify({ |
|
collection_name: collection_name, |
|
query: query, |
|
k: k |
|
}) |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
error = err.detail; |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
export const queryCollection = async ( |
|
token: string, |
|
collection_names: string, |
|
query: string, |
|
k: number | null = null |
|
) => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/query/collection`, { |
|
method: 'POST', |
|
headers: { |
|
Accept: 'application/json', |
|
'Content-Type': 'application/json', |
|
authorization: `Bearer ${token}` |
|
}, |
|
body: JSON.stringify({ |
|
collection_names: collection_names, |
|
query: query, |
|
k: k |
|
}) |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
error = err.detail; |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
export const scanDocs = async (token: string) => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/scan`, { |
|
method: 'GET', |
|
headers: { |
|
Accept: 'application/json', |
|
authorization: `Bearer ${token}` |
|
} |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
error = err.detail; |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
export const resetUploadDir = async (token: string) => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/reset/uploads`, { |
|
method: 'GET', |
|
headers: { |
|
Accept: 'application/json', |
|
authorization: `Bearer ${token}` |
|
} |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
error = err.detail; |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
export const resetVectorDB = async (token: string) => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/reset`, { |
|
method: 'GET', |
|
headers: { |
|
Accept: 'application/json', |
|
authorization: `Bearer ${token}` |
|
} |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
error = err.detail; |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
export const getEmbeddingConfig = async (token: string) => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/embedding`, { |
|
method: 'GET', |
|
headers: { |
|
'Content-Type': 'application/json', |
|
Authorization: `Bearer ${token}` |
|
} |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
console.log(err); |
|
error = err.detail; |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
type OpenAIConfigForm = { |
|
key: string; |
|
url: string; |
|
batch_size: number; |
|
}; |
|
|
|
type EmbeddingModelUpdateForm = { |
|
openai_config?: OpenAIConfigForm; |
|
embedding_engine: string; |
|
embedding_model: string; |
|
}; |
|
|
|
export const updateEmbeddingConfig = async (token: string, payload: EmbeddingModelUpdateForm) => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/embedding/update`, { |
|
method: 'POST', |
|
headers: { |
|
'Content-Type': 'application/json', |
|
Authorization: `Bearer ${token}` |
|
}, |
|
body: JSON.stringify({ |
|
...payload |
|
}) |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
console.log(err); |
|
error = err.detail; |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
export const getRerankingConfig = async (token: string) => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/reranking`, { |
|
method: 'GET', |
|
headers: { |
|
'Content-Type': 'application/json', |
|
Authorization: `Bearer ${token}` |
|
} |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
console.log(err); |
|
error = err.detail; |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
type RerankingModelUpdateForm = { |
|
reranking_model: string; |
|
}; |
|
|
|
export const updateRerankingConfig = async (token: string, payload: RerankingModelUpdateForm) => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/reranking/update`, { |
|
method: 'POST', |
|
headers: { |
|
'Content-Type': 'application/json', |
|
Authorization: `Bearer ${token}` |
|
}, |
|
body: JSON.stringify({ |
|
...payload |
|
}) |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
console.log(err); |
|
error = err.detail; |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
export const runWebSearch = async ( |
|
token: string, |
|
query: string, |
|
collection_name?: string |
|
): Promise<SearchDocument | null> => { |
|
let error = null; |
|
|
|
const res = await fetch(`${RAG_API_BASE_URL}/web/search`, { |
|
method: 'POST', |
|
headers: { |
|
'Content-Type': 'application/json', |
|
Authorization: `Bearer ${token}` |
|
}, |
|
body: JSON.stringify({ |
|
query, |
|
collection_name: collection_name ?? '' |
|
}) |
|
}) |
|
.then(async (res) => { |
|
if (!res.ok) throw await res.json(); |
|
return res.json(); |
|
}) |
|
.catch((err) => { |
|
console.log(err); |
|
error = err.detail; |
|
return null; |
|
}); |
|
|
|
if (error) { |
|
throw error; |
|
} |
|
|
|
return res; |
|
}; |
|
|
|
export interface SearchDocument { |
|
status: boolean; |
|
collection_name: string; |
|
filenames: string[]; |
|
} |
|
|