Skip to content

Commit

Permalink
adjusting database connectivity
Browse files Browse the repository at this point in the history
  • Loading branch information
WingZer0o committed May 31, 2024
1 parent 98ca336 commit 8f074c6
Show file tree
Hide file tree
Showing 6 changed files with 311 additions and 24 deletions.
185 changes: 182 additions & 3 deletions deno.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

31 changes: 26 additions & 5 deletions handlers/message-create.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,12 @@ import {
} from "npm:@langchain/core/prompts";
import { StringOutputParser } from "npm:@langchain/core/output_parsers";
import { OllamaEmbeddings } from "npm:@langchain/community/embeddings/ollama";
import { NeonPostgres } from "npm:@langchain/community/vectorstores/neon";
import { createStuffDocumentsChain } from "npm:langchain/chains/combine_documents";
import { AIMessage, HumanMessage } from "npm:@langchain/core/messages";
import { ChatMessageRepository } from "../repositories/chat-message-repository.ts";
import { ReloadDocumentationCommand } from "./reload-documentation.command.ts";
import { PoolConfig } from "npm:pg";
import { DistanceStrategy, PGVectorStore } from "npm:@langchain/community/vectorstores/pgvector";

export default class MessageCreateHandler {
bot: Bot;
Expand Down Expand Up @@ -55,10 +56,30 @@ export default class MessageCreateHandler {
baseUrl: Deno.env.get("OLLAMA_URL"),
model: Deno.env.get("LLM"),
});
const vectorStore = await NeonPostgres.initialize(embeddings, {
connectionString: Deno.env.get("POSTGRES_URL") as string,
});
const documentSimilaritySearch = await vectorStore.similaritySearch(
const config = {
postgresConnectionOptions: {
type: "postgres",
host: Deno.env.get("POSTGRES_HOST"),
port: 5432,
user: Deno.env.get("POSTGRES_USER"),
password: Deno.env.get("POSTGRES_PASSWORD"),
database: Deno.env.get("POSTGRES_DATABASE"),
} as PoolConfig,
tableName: "testlangchain",
columns: {
idColumnName: "id",
vectorColumnName: "vector",
contentColumnName: "content",
metadataColumnName: "metadata",
},
// supported distance strategies: cosine (default), innerProduct, or euclidean
distanceStrategy: "cosine" as DistanceStrategy,
};
const pgvectorStore = await PGVectorStore.initialize(
embeddings,
config
);
const documentSimilaritySearch = await pgvectorStore.similaritySearch(
gotMessage.content,
);
const prompt = ChatPromptTemplate.fromTemplate(
Expand Down
40 changes: 28 additions & 12 deletions handlers/reload-documentation.command.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { DocumentationVectorStoreRepository } from "../repositories/documentation-vector-store-repository.ts";
import { CheerioWebBaseLoader } from "npm:langchain/document_loaders/web/cheerio";
import { RecursiveCharacterTextSplitter } from "npm:langchain/text_splitter";
import { NeonPostgres } from "npm:@langchain/community/vectorstores/neon";
import { PoolConfig } from "npm:pg";
import { DistanceStrategy, PGVectorStore } from "npm:@langchain/community/vectorstores/pgvector";
import { OllamaEmbeddings } from "npm:@langchain/community/embeddings/ollama";

export class ReloadDocumentationCommand {
Expand All @@ -23,24 +24,39 @@ export class ReloadDocumentationCommand {
const cSharpNonParllelDocs = new CheerioWebBaseLoader(
"https://raw.githubusercontent.com/Cryptographic-API-Services/cas-dotnet-sdk/main/docs/EXAMPLES.md"
);
const cSharpParllelDocs = new CheerioWebBaseLoader(
"https://raw.githubusercontent.com/Cryptographic-API-Services/cas-dotnet-sdk/main/docs/PARALLEL.md"
);
const typeScriptNonParllelDocs = new CheerioWebBaseLoader(
"https://raw.githubusercontent.com/Cryptographic-API-Services/cas-typescript-sdk/main/docs/EXAMPLES.md"
);
const splitter = new RecursiveCharacterTextSplitter();
const nonParallelDocumentationDocs = await cSharpNonParllelDocs.load();
const nonParallelDocumentationSplitDocs = await splitter.splitDocuments(nonParallelDocumentationDocs);
const vectorStore = await NeonPostgres.initialize(embeddings, {
connectionString: Deno.env.get("POSTGRES_URL") as string,
});
await vectorStore.addDocuments(nonParallelDocumentationSplitDocs);
const parallelDocumentationDocs = await cSharpParllelDocs.load();
const parallelDocumentationSplitDocs = await splitter.splitDocuments(parallelDocumentationDocs);
await vectorStore.addDocuments(parallelDocumentationSplitDocs);
const config = {
postgresConnectionOptions: {
type: "postgres",
host: Deno.env.get("POSTGRES_HOST"),
port: 5432,
user: Deno.env.get("POSTGRES_USER"),
password: Deno.env.get("POSTGRES_PASSWORD"),
database: Deno.env.get("POSTGRES_DATABASE"),
} as PoolConfig,
tableName: "testlangchain",
columns: {
idColumnName: "id",
vectorColumnName: "vector",
contentColumnName: "content",
metadataColumnName: "metadata",
},
// supported distance strategies: cosine (default), innerProduct, or euclidean
distanceStrategy: "cosine" as DistanceStrategy,
};
const pgvectorStore = await PGVectorStore.initialize(
embeddings,
config
);
await pgvectorStore.addDocuments(nonParallelDocumentationSplitDocs);
const typeScriptNonParallelDocumentationDocs = await typeScriptNonParllelDocs.load();
const typeScriptNonParallelDocumentationSplitDocs = await splitter.splitDocuments(typeScriptNonParallelDocumentationDocs);
await vectorStore.addDocuments(typeScriptNonParallelDocumentationSplitDocs);
await pgvectorStore.addDocuments(typeScriptNonParallelDocumentationSplitDocs);
await pgvectorStore.end();
}
}
Loading

0 comments on commit 8f074c6

Please sign in to comment.