diff --git a/packages/core/src/ServiceContext.ts b/packages/core/src/ServiceContext.ts
index 68b7c1fb293bbdcfafd9038167ea98ee29e513b4..d521dd093a8769240ec9c8c74bbf19ab016cdb18 100644
--- a/packages/core/src/ServiceContext.ts
+++ b/packages/core/src/ServiceContext.ts
@@ -31,3 +31,20 @@ export function serviceContextFromDefaults(options: ServiceContextOptions) {
 
   return serviceContext;
 }
+
+export function serviceContextFromServiceContext(
+  serviceContext: ServiceContext,
+  options: ServiceContextOptions
+) {
+  const newServiceContext = { ...serviceContext };
+  if (options.llmPredictor) {
+    newServiceContext.llmPredictor = options.llmPredictor;
+  }
+  if (options.embedModel) {
+    newServiceContext.embedModel = options.embedModel;
+  }
+  if (options.nodeParser) {
+    newServiceContext.nodeParser = options.nodeParser;
+  }
+  return newServiceContext;
+}