[{"data":1,"prerenderedAt":627},["ShallowReactive",2],{"\u002Fdocs\u002Fapi-reference\u002Fmemory-service":3},{"id":4,"title":5,"body":6,"description":620,"extension":621,"meta":622,"navigation":80,"path":623,"seo":624,"stem":625,"__hash__":626},"docs\u002Fdocs\u002F4.api-reference\u002F3.memory-service.md","MemoryService",{"type":7,"value":8,"toc":611},"minimark",[9,13,42,46,51,379,383,388,479,483,525,528,562,566,598,607],[10,11,5],"h1",{"id":12},"memoryservice",[14,15,20],"pre",{"className":16,"code":17,"language":18,"meta":19,"style":19},"language-python shiki shiki-themes github-dark","from mango.memory import MemoryService\n","python","",[21,22,23],"code",{"__ignoreMap":19},[24,25,28,32,36,39],"span",{"class":26,"line":27},"line",1,[24,29,31],{"class":30},"snl16","from",[24,33,35],{"class":34},"s95oV"," mango.memory ",[24,37,38],{"class":30},"import",[24,40,41],{"class":34}," MemoryService\n",[43,44,45],"p",{},"Abstract base class for all memory backends. Implement this to use any vector store.",[47,48,50],"h2",{"id":49},"interface","Interface",[14,52,54],{"className":16,"code":53,"language":18,"meta":19,"style":19},"class MemoryService(ABC):\n\n    # Tool-usage memory\n    @abstractmethod\n    async def store(self, entry: MemoryEntry) -> None: ...\n\n    @abstractmethod\n    async def retrieve(\n        self,\n        question: str,\n        top_k: int = 3,\n        similarity_threshold: float = 0.6,\n    ) -> list[MemoryEntry]: ...\n\n    @abstractmethod\n    async def delete(self, entry_id: str) -> None: ...\n\n    # Text memory\n    @abstractmethod\n    async def save_text(self, text: str) -> str: ...\n\n    @abstractmethod\n    async def search_text(\n        self,\n        query: str,\n        top_k: int = 3,\n        similarity_threshold: float = 0.6,\n    ) -> list[TextMemoryEntry]: ...\n\n    # Sync\n    @abstractmethod\n    def count(self) -> int: ...\n",[21,55,56,75,82,89,95,119,124,129,142,148,160,177,193,201,206,211,235,240,246,251,274,279,284,296,301,311,324,337,345,350,356,361],{"__ignoreMap":19},[24,57,58,61,65,68,72],{"class":26,"line":27},[24,59,60],{"class":30},"class",[24,62,64],{"class":63},"svObZ"," MemoryService",[24,66,67],{"class":34},"(",[24,69,71],{"class":70},"sDLfK","ABC",[24,73,74],{"class":34},"):\n",[24,76,78],{"class":26,"line":77},2,[24,79,81],{"emptyLinePlaceholder":80},true,"\n",[24,83,85],{"class":26,"line":84},3,[24,86,88],{"class":87},"sAwPA","    # Tool-usage memory\n",[24,90,92],{"class":26,"line":91},4,[24,93,94],{"class":63},"    @abstractmethod\n",[24,96,98,101,104,107,110,113,116],{"class":26,"line":97},5,[24,99,100],{"class":30},"    async",[24,102,103],{"class":30}," def",[24,105,106],{"class":63}," store",[24,108,109],{"class":34},"(self, entry: MemoryEntry) -> ",[24,111,112],{"class":70},"None",[24,114,115],{"class":34},": ",[24,117,118],{"class":70},"...\n",[24,120,122],{"class":26,"line":121},6,[24,123,81],{"emptyLinePlaceholder":80},[24,125,127],{"class":26,"line":126},7,[24,128,94],{"class":63},[24,130,132,134,136,139],{"class":26,"line":131},8,[24,133,100],{"class":30},[24,135,103],{"class":30},[24,137,138],{"class":63}," retrieve",[24,140,141],{"class":34},"(\n",[24,143,145],{"class":26,"line":144},9,[24,146,147],{"class":34},"        self,\n",[24,149,151,154,157],{"class":26,"line":150},10,[24,152,153],{"class":34},"        question: ",[24,155,156],{"class":70},"str",[24,158,159],{"class":34},",\n",[24,161,163,166,169,172,175],{"class":26,"line":162},11,[24,164,165],{"class":34},"        top_k: ",[24,167,168],{"class":70},"int",[24,170,171],{"class":30}," =",[24,173,174],{"class":70}," 3",[24,176,159],{"class":34},[24,178,180,183,186,188,191],{"class":26,"line":179},12,[24,181,182],{"class":34},"        similarity_threshold: ",[24,184,185],{"class":70},"float",[24,187,171],{"class":30},[24,189,190],{"class":70}," 0.6",[24,192,159],{"class":34},[24,194,196,199],{"class":26,"line":195},13,[24,197,198],{"class":34},"    ) -> list[MemoryEntry]: ",[24,200,118],{"class":70},[24,202,204],{"class":26,"line":203},14,[24,205,81],{"emptyLinePlaceholder":80},[24,207,209],{"class":26,"line":208},15,[24,210,94],{"class":63},[24,212,214,216,218,221,224,226,229,231,233],{"class":26,"line":213},16,[24,215,100],{"class":30},[24,217,103],{"class":30},[24,219,220],{"class":63}," delete",[24,222,223],{"class":34},"(self, entry_id: ",[24,225,156],{"class":70},[24,227,228],{"class":34},") -> ",[24,230,112],{"class":70},[24,232,115],{"class":34},[24,234,118],{"class":70},[24,236,238],{"class":26,"line":237},17,[24,239,81],{"emptyLinePlaceholder":80},[24,241,243],{"class":26,"line":242},18,[24,244,245],{"class":87},"    # Text memory\n",[24,247,249],{"class":26,"line":248},19,[24,250,94],{"class":63},[24,252,254,256,258,261,264,266,268,270,272],{"class":26,"line":253},20,[24,255,100],{"class":30},[24,257,103],{"class":30},[24,259,260],{"class":63}," save_text",[24,262,263],{"class":34},"(self, text: ",[24,265,156],{"class":70},[24,267,228],{"class":34},[24,269,156],{"class":70},[24,271,115],{"class":34},[24,273,118],{"class":70},[24,275,277],{"class":26,"line":276},21,[24,278,81],{"emptyLinePlaceholder":80},[24,280,282],{"class":26,"line":281},22,[24,283,94],{"class":63},[24,285,287,289,291,294],{"class":26,"line":286},23,[24,288,100],{"class":30},[24,290,103],{"class":30},[24,292,293],{"class":63}," search_text",[24,295,141],{"class":34},[24,297,299],{"class":26,"line":298},24,[24,300,147],{"class":34},[24,302,304,307,309],{"class":26,"line":303},25,[24,305,306],{"class":34},"        query: ",[24,308,156],{"class":70},[24,310,159],{"class":34},[24,312,314,316,318,320,322],{"class":26,"line":313},26,[24,315,165],{"class":34},[24,317,168],{"class":70},[24,319,171],{"class":30},[24,321,174],{"class":70},[24,323,159],{"class":34},[24,325,327,329,331,333,335],{"class":26,"line":326},27,[24,328,182],{"class":34},[24,330,185],{"class":70},[24,332,171],{"class":30},[24,334,190],{"class":70},[24,336,159],{"class":34},[24,338,340,343],{"class":26,"line":339},28,[24,341,342],{"class":34},"    ) -> list[TextMemoryEntry]: ",[24,344,118],{"class":70},[24,346,348],{"class":26,"line":347},29,[24,349,81],{"emptyLinePlaceholder":80},[24,351,353],{"class":26,"line":352},30,[24,354,355],{"class":87},"    # Sync\n",[24,357,359],{"class":26,"line":358},31,[24,360,94],{"class":63},[24,362,364,367,370,373,375,377],{"class":26,"line":363},32,[24,365,366],{"class":30},"    def",[24,368,369],{"class":63}," count",[24,371,372],{"class":34},"(self) -> ",[24,374,168],{"class":70},[24,376,115],{"class":34},[24,378,118],{"class":70},[47,380,382],{"id":381},"data-types","Data types",[384,385,387],"h3",{"id":386},"memoryentry","MemoryEntry",[14,389,391],{"className":16,"code":390,"language":18,"meta":19,"style":19},"@dataclass\nclass MemoryEntry:\n    id: str\n    question: str        # original natural language question\n    tool_name: str       # tool that was called\n    tool_args: dict      # exact arguments that worked\n    result_summary: str  # first 300 chars of the result\n    similarity: float    # filled by retrieve(), cosine similarity\n    timestamp: str       # ISO timestamp\n",[21,392,393,398,408,418,428,438,449,459,469],{"__ignoreMap":19},[24,394,395],{"class":26,"line":27},[24,396,397],{"class":63},"@dataclass\n",[24,399,400,402,405],{"class":26,"line":77},[24,401,60],{"class":30},[24,403,404],{"class":63}," MemoryEntry",[24,406,407],{"class":34},":\n",[24,409,410,413,415],{"class":26,"line":84},[24,411,412],{"class":70},"    id",[24,414,115],{"class":34},[24,416,417],{"class":70},"str\n",[24,419,420,423,425],{"class":26,"line":91},[24,421,422],{"class":34},"    question: ",[24,424,156],{"class":70},[24,426,427],{"class":87},"        # original natural language question\n",[24,429,430,433,435],{"class":26,"line":97},[24,431,432],{"class":34},"    tool_name: ",[24,434,156],{"class":70},[24,436,437],{"class":87},"       # tool that was called\n",[24,439,440,443,446],{"class":26,"line":121},[24,441,442],{"class":34},"    tool_args: ",[24,444,445],{"class":70},"dict",[24,447,448],{"class":87},"      # exact arguments that worked\n",[24,450,451,454,456],{"class":26,"line":126},[24,452,453],{"class":34},"    result_summary: ",[24,455,156],{"class":70},[24,457,458],{"class":87},"  # first 300 chars of the result\n",[24,460,461,464,466],{"class":26,"line":131},[24,462,463],{"class":34},"    similarity: ",[24,465,185],{"class":70},[24,467,468],{"class":87},"    # filled by retrieve(), cosine similarity\n",[24,470,471,474,476],{"class":26,"line":144},[24,472,473],{"class":34},"    timestamp: ",[24,475,156],{"class":70},[24,477,478],{"class":87},"       # ISO timestamp\n",[384,480,482],{"id":481},"textmemoryentry","TextMemoryEntry",[14,484,486],{"className":16,"code":485,"language":18,"meta":19,"style":19},"@dataclass\nclass TextMemoryEntry:\n    id: str\n    text: str\n    similarity: float    # filled by search_text()\n",[21,487,488,492,501,509,516],{"__ignoreMap":19},[24,489,490],{"class":26,"line":27},[24,491,397],{"class":63},[24,493,494,496,499],{"class":26,"line":77},[24,495,60],{"class":30},[24,497,498],{"class":63}," TextMemoryEntry",[24,500,407],{"class":34},[24,502,503,505,507],{"class":26,"line":84},[24,504,412],{"class":70},[24,506,115],{"class":34},[24,508,417],{"class":70},[24,510,511,514],{"class":26,"line":91},[24,512,513],{"class":34},"    text: ",[24,515,417],{"class":70},[24,517,518,520,522],{"class":26,"line":97},[24,519,463],{"class":34},[24,521,185],{"class":70},[24,523,524],{"class":87},"    # filled by search_text()\n",[384,526,527],{"id":527},"make_entry_id",[14,529,531],{"className":16,"code":530,"language":18,"meta":19,"style":19},"from mango.memory import make_entry_id\n\nentry_id = make_entry_id()   # str(uuid.uuid4())\n",[21,532,533,544,548],{"__ignoreMap":19},[24,534,535,537,539,541],{"class":26,"line":27},[24,536,31],{"class":30},[24,538,35],{"class":34},[24,540,38],{"class":30},[24,542,543],{"class":34}," make_entry_id\n",[24,545,546],{"class":26,"line":77},[24,547,81],{"emptyLinePlaceholder":80},[24,549,550,553,556,559],{"class":26,"line":84},[24,551,552],{"class":34},"entry_id ",[24,554,555],{"class":30},"=",[24,557,558],{"class":34}," make_entry_id()   ",[24,560,561],{"class":87},"# str(uuid.uuid4())\n",[47,563,565],{"id":564},"built-in-implementation","Built-in implementation",[567,568,569,582],"table",{},[570,571,572],"thead",{},[573,574,575,579],"tr",{},[576,577,578],"th",{},"Class",[576,580,581],{},"Import",[583,584,585],"tbody",{},[573,586,587,593],{},[588,589,590],"td",{},[21,591,592],{},"ChromaAgentMemory",[588,594,595],{},[21,596,597],{},"mango.integrations.chromadb",[43,599,600,601,606],{},"→ See ",[602,603,605],"a",{"href":604},"\u002Fdocs\u002Fadvanced\u002Fcustom-memory","Custom Memory Backend"," to implement your own.",[608,609,610],"style",{},"html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}",{"title":19,"searchDepth":77,"depth":77,"links":612},[613,614,619],{"id":49,"depth":77,"text":50},{"id":381,"depth":77,"text":382,"children":615},[616,617,618],{"id":386,"depth":84,"text":387},{"id":481,"depth":84,"text":482},{"id":527,"depth":84,"text":527},{"id":564,"depth":77,"text":565},"Abstract interface for memory backends.","md",{},"\u002Fdocs\u002Fapi-reference\u002Fmemory-service",{"title":5,"description":620},"docs\u002F4.api-reference\u002F3.memory-service","c1VQeX_WQsejWsldAg3T9omQMNIiRedwMCC8qnOX0L4",1776189332124]