Skip to content

Commit c624ed4

Browse files
authored
(EAI-975) Better list of products, programming langs, topics (#760)
* Add missing products/subproducts and reorganize a bit * Reorganize & add programming languages * Add more topics * dash->underscore, move some products to topics * rename value * Add performance advisor * add back product that was accidentally removed * Add name/description to topics * Product name consistency across ingest too * simpler way to enforce product/driver names
1 parent bd429f4 commit c624ed4

File tree

8 files changed

+244
-89
lines changed

8 files changed

+244
-89
lines changed

packages/chatbot-server-mongodb-public/src/processors/extractMongoDbMetadataFromUserMessage.eval.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ const evalCases: ExtractMongoDbMetadataEvalCase[] = [
3939
input: "pymongo insert data",
4040
expected: {
4141
programmingLanguage: "python",
42-
mongoDbProduct: "Drivers",
42+
mongoDbProduct: "MongoDB Drivers",
4343
} satisfies ExtractMongoDbMetadataFunction,
4444
tags: ["driver", "python"],
4545
},
@@ -72,7 +72,7 @@ const evalCases: ExtractMongoDbMetadataEvalCase[] = [
7272
input:
7373
"how to open a change stream watch on a database and filter the stream",
7474
expected: {
75-
mongoDbProduct: "Drivers",
75+
mongoDbProduct: "MongoDB Drivers",
7676
programmingLanguage: "javascript",
7777
} satisfies ExtractMongoDbMetadataFunction,
7878
tags: ["change_streams"],
@@ -82,7 +82,7 @@ const evalCases: ExtractMongoDbMetadataEvalCase[] = [
8282
input:
8383
"how to open a change stream watch on a database and filter the stream pymongo",
8484
expected: {
85-
mongoDbProduct: "Drivers",
85+
mongoDbProduct: "MongoDB Drivers",
8686
programmingLanguage: "python",
8787
} satisfies ExtractMongoDbMetadataFunction,
8888
tags: ["change_streams"],
@@ -134,7 +134,7 @@ const evalCases: ExtractMongoDbMetadataEvalCase[] = [
134134
input: "How do I connect to MongoDB using the Java driver?",
135135
expected: {
136136
programmingLanguage: "java",
137-
mongoDbProduct: "Drivers",
137+
mongoDbProduct: "MongoDB Drivers",
138138
} satisfies ExtractMongoDbMetadataFunction,
139139
tags: ["driver", "java"],
140140
},
@@ -143,7 +143,7 @@ const evalCases: ExtractMongoDbMetadataEvalCase[] = [
143143
input: "How do I query a collection using LINQ in C#?",
144144
expected: {
145145
programmingLanguage: "csharp",
146-
mongoDbProduct: "Drivers",
146+
mongoDbProduct: "MongoDB Drivers",
147147
} satisfies ExtractMongoDbMetadataFunction,
148148
tags: ["driver", "csharp"],
149149
},
@@ -161,7 +161,7 @@ const evalCases: ExtractMongoDbMetadataEvalCase[] = [
161161
input: "How do I handle MongoDB connections in Node.js?",
162162
expected: {
163163
programmingLanguage: "javascript",
164-
mongoDbProduct: "Drivers",
164+
mongoDbProduct: "MongoDB Drivers",
165165
} satisfies ExtractMongoDbMetadataFunction,
166166
tags: ["driver", "javascript"],
167167
},
@@ -170,7 +170,7 @@ const evalCases: ExtractMongoDbMetadataEvalCase[] = [
170170
input: "How do I insert multiple documents with the MongoDB Go driver?",
171171
expected: {
172172
programmingLanguage: "go",
173-
mongoDbProduct: "Drivers",
173+
mongoDbProduct: "MongoDB Drivers",
174174
} satisfies ExtractMongoDbMetadataFunction,
175175
tags: ["driver", "go"],
176176
},

packages/chatbot-server-mongodb-public/src/processors/extractMongoDbMetadataFromUserMessage.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export const ExtractMongoDbMetadataFunctionSchema = z.object({
2222
.enum(mongoDbProductNames)
2323
.describe(
2424
`Most important MongoDB products present in the content.
25-
Include "Driver" if the user is asking about a programming language with a MongoDB driver.
25+
Include "MongoDB Drivers" if the user is asking about a programming language with a MongoDB driver.
2626
If the product is ambiguous, say "MongoDB Server".`
2727
)
2828
.default("MongoDB Server")
@@ -60,13 +60,13 @@ const fewShotExamples: OpenAI.Chat.ChatCompletionMessageParam[] = [
6060
makeUserMessage("pymongo insert data"),
6161
makeAssistantFunctionCallMessage(name, {
6262
programmingLanguage: "python",
63-
mongoDbProduct: "Drivers",
63+
mongoDbProduct: "MongoDB Drivers",
6464
} satisfies ExtractMongoDbMetadataFunction),
6565
// Example 5
6666
makeUserMessage("How do I create an index in MongoDB using the Java driver?"),
6767
makeAssistantFunctionCallMessage(name, {
6868
programmingLanguage: "java",
69-
mongoDbProduct: "Drivers",
69+
mongoDbProduct: "MongoDB Drivers",
7070
} satisfies ExtractMongoDbMetadataFunction),
7171
// Example 6
7272
makeUserMessage("$lookup"),

packages/ingest-mongodb-public/src/sources/snooty/SnootyDataSource.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { createInterface } from "readline";
22
import { Page, PageFormat, logger } from "mongodb-rag-core";
33
import fetch from "node-fetch";
44
import { DataSource, ProjectBase } from "mongodb-rag-core/dataSources";
5+
import { MongoDbDriverName, MongoDbProductName } from "mongodb-rag-core/mongoDbMetadata";
56
import {
67
snootyAstToMd,
78
getTitleFromSnootyAst,
@@ -148,6 +149,7 @@ export type SnootyMetadata = {
148149
export type SnootyProjectConfig = ProjectBase & {
149150
type: "snooty";
150151
branches?: Branch[];
152+
productName?: MongoDbDriverName | MongoDbProductName;
151153
};
152154

153155
/**

packages/ingest-mongodb-public/src/sources/snooty/SnootyProjectsInfo.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
prepareSnootySources,
77
} from "./SnootyProjectsInfo";
88
import { PageMetadata } from "mongodb-rag-core";
9+
import { LocallySpecifiedSnootyProjectConfig } from "./SnootyDataSource";
910

1011
const snootyDataApiBaseUrl = "https://snooty-data-api.mongodb.com/prod/";
1112

@@ -88,7 +89,7 @@ describe("SnootyProjectsInfo", () => {
8889

8990
describe("prepareSnootySources", () => {
9091
it("returns a list of Snooty data sources", async () => {
91-
const projects = [
92+
const projects: LocallySpecifiedSnootyProjectConfig[] = [
9293
{
9394
type: "snooty" as const,
9495
name: "spark-connector",
@@ -116,7 +117,7 @@ describe("SnootyProjectsInfo", () => {
116117
expect(page.metadata?.version).toBeDefined();
117118
});
118119
it("allows current version override", async () => {
119-
const project = {
120+
const project: LocallySpecifiedSnootyProjectConfig = {
120121
type: "snooty" as const,
121122
name: "spark-connector",
122123
tags: ["docs", "spark-connector", "spark", "apache-spark"],

packages/ingest-mongodb-public/src/sources/snootySources.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { RenderLinks } from "./snooty/snootyAstToMd";
22
import { LocallySpecifiedSnootyProjectConfig } from "./snooty/SnootyDataSource";
33
import { prepareSnootySources } from "./snooty/SnootyProjectsInfo";
4+
import { MongoDbProductName } from "mongodb-rag-core/mongoDbMetadata";
45

56
export const snootyProjectConfig: LocallySpecifiedSnootyProjectConfig[] = [
67
{
@@ -86,13 +87,13 @@ export const snootyProjectConfig: LocallySpecifiedSnootyProjectConfig[] = [
8687
type: "snooty",
8788
name: "java",
8889
tags: ["docs", "driver", "java", "java-sync"],
89-
productName: "Java Driver",
90+
productName: "Java Sync Driver",
9091
},
9192
{
9293
type: "snooty",
9394
name: "docs-k8s-operator",
9495
tags: ["docs", "kubernetes-operator", "kubernetes", "k8s"],
95-
productName: "MongoDB Kubernetes Operator",
96+
productName: "Kubernetes Operator",
9697
},
9798
{
9899
type: "snooty",
@@ -104,7 +105,7 @@ export const snootyProjectConfig: LocallySpecifiedSnootyProjectConfig[] = [
104105
type: "snooty",
105106
name: "mck",
106107
tags: ["docs", "kubernetes", "k8s", "kubernetes-controllers", "kubernetes-operator"],
107-
productName: "MongoDB Controllers for Kubernetes"
108+
productName: "MongoDB Controllers for Kubernetes",
108109
},
109110
{
110111
type: "snooty",
@@ -192,8 +193,8 @@ export const snootyProjectConfig: LocallySpecifiedSnootyProjectConfig[] = [
192193
{
193194
type: "snooty",
194195
name: "visual-studio-extension",
195-
tags: ["docs", "visual-studio-extension", "visual-studio", "gui"],
196-
productName: "MongoDB Visual Studio Extension",
196+
tags: ["docs", "visual-studio-extension", "visual-studio", "gui", "csharp"],
197+
productName: "C# Analyzer",
197198
},
198199
{
199200
type: "snooty",
@@ -235,7 +236,7 @@ export const snootyProjectConfig: LocallySpecifiedSnootyProjectConfig[] = [
235236
type: "snooty",
236237
name: "pymongo-arrow",
237238
tags: ["docs", "driver", "python", "pymongo-arrow"],
238-
productName: "PyMongo Arrow",
239+
productName: "PyMongo Arrow Driver",
239240
},
240241
{
241242
type: "snooty",
@@ -265,7 +266,7 @@ export const snootyProjectConfig: LocallySpecifiedSnootyProjectConfig[] = [
265266
type: "snooty",
266267
name: "atlas-architecture",
267268
tags: ["docs", "atlas", "architecture"],
268-
productName: "MongoDB Atlas Architecture Center",
269+
productName: "MongoDB Atlas Architecture Center" as MongoDbProductName,
269270
},
270271
];
271272

0 commit comments

Comments
 (0)