mirror of
https://github.com/OpenHands/OpenHands.git
synced 2025-12-26 05:48:36 +08:00
* initialize control loop * add todo * more todo * add dockerignore * add notes to prompt * encourage llm to finish * add debug env * update prompts a bit * fix task prompts * add basic regression framework * add hello-world regression case * add hello-name test case * fix workspace ignore * document regression script * add python-cli test case * add default git config * add help regression test * add node rewrite test case * add react-todo test case * fix dockerfile * add ability to run background commands * add client-server test case * update regression readme * better support for background commands * update tests * fix bug in command removal
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
import os
|
|
import lib.json as json
|
|
|
|
import chromadb
|
|
|
|
from llama_index.core import Document
|
|
from llama_index.core.retrievers import VectorIndexRetriever
|
|
from llama_index.core import VectorStoreIndex, StorageContext, load_index_from_storage
|
|
from llama_index.core.storage.docstore import SimpleDocumentStore
|
|
from llama_index.core.vector_stores import SimpleVectorStore
|
|
|
|
from llama_index.vector_stores.chroma import ChromaVectorStore
|
|
|
|
class LongTermMemory:
|
|
def __init__(self):
|
|
db = chromadb.Client()
|
|
self.collection = db.create_collection(name="memories")
|
|
vector_store = ChromaVectorStore(chroma_collection=self.collection)
|
|
storage_context = StorageContext.from_defaults(vector_store=vector_store)
|
|
self.index = VectorStoreIndex.from_vector_store(vector_store)
|
|
self.thought_idx = 0
|
|
|
|
def add_event(self, event):
|
|
doc = Document(
|
|
text=json.dumps(event),
|
|
doc_id=self.thought_idx,
|
|
extra_info={
|
|
"type": event.action,
|
|
"idx": self.thought_idx,
|
|
},
|
|
)
|
|
self.thought_idx += 1
|
|
self.index.insert(doc)
|
|
|
|
def search(self, query, k=10):
|
|
retriever = VectorIndexRetriever(
|
|
index=self.index,
|
|
similarity_top_k=k,
|
|
)
|
|
results = retriever.retrieve(query)
|
|
return [r.get_text() for r in results]
|
|
|
|
|