MCPcopy Create free account
hub / github.com/Spinachead/arg / load_vector_store

Method load_vector_store

app/knowledge_base/kb_cache/faiss_cache.py:90–139  ·  view source on GitHub ↗
(
        self,
        kb_name: str,
        vector_name: str = None,
        create: bool = True,
        embed_model: str = get_default_embedding(),
    )

Source from the content-addressed store, hash-verified

88
89class KBFaissPool(_FaissPool):
90 def load_vector_store(
91 self,
92 kb_name: str,
93 vector_name: str = None,
94 create: bool = True,
95 embed_model: str = get_default_embedding(),
96 ) -> ThreadSafeFaiss:
97 self.atomic.acquire()
98 locked = True
99 vector_name = vector_name or embed_model.replace(":", "_")
100 cache = self.get((kb_name, vector_name)) # 用元组比拼接字符串好一些
101 try:
102 if cache is None:
103 item = ThreadSafeFaiss((kb_name, vector_name), pool=self)
104 self.set((kb_name, vector_name), item)
105 with item.acquire(msg="初始化"):
106 self.atomic.release()
107 locked = False
108 vs_path = get_vs_path(kb_name, vector_name)
109 logger.info(f"这是vs_path{vs_path}")
110
111 if os.path.isfile(os.path.join(vs_path, "index.faiss")):
112 embeddings = get_Embeddings(embed_model=embed_model)
113 vector_store = FAISS.load_local(
114 vs_path,
115 embeddings,
116 normalize_L2=True,
117 allow_dangerous_deserialization=True,
118 )
119 elif create:
120 # create an empty vector store
121 if not os.path.exists(vs_path):
122 os.makedirs(vs_path)
123 vector_store = self.new_vector_store(
124 kb_name=kb_name, embed_model=embed_model
125 )
126 vector_store.save_local(vs_path)
127 else:
128 raise RuntimeError(f"knowledge base {kb_name} not exist.")
129 item.obj = vector_store
130 item.finish_loading()
131 else:
132 self.atomic.release()
133 locked = False
134 except Exception as e:
135 if locked: # we don't know exception raised before or after atomic.release
136 self.atomic.release()
137 logger.exception(e)
138 raise RuntimeError(f"向量库 {kb_name} 加载失败。")
139 return self.get((kb_name, vector_name))
140
141
142class MemoFaissPool(_FaissPool):

Callers

nothing calls this directly

Calls 10

get_default_embeddingFunction · 0.90
get_vs_pathFunction · 0.90
get_EmbeddingsFunction · 0.90
ThreadSafeFaissClass · 0.85
getMethod · 0.80
setMethod · 0.80
existsMethod · 0.80
new_vector_storeMethod · 0.80
finish_loadingMethod · 0.80
acquireMethod · 0.45

Tested by

no test coverage detected